1

I have one button, and I want to click on this button , I do

login_form = driver.find_element_by_xpath("/html/body/div/h1/div[1]").click();

my code :

driver = webdriver.Firefox()
driver.get('http://www.textdet.com/')

e = driver.find_element_by_id("imagefile")                  
e.send_keys("/home/brm17/Desktop/ProjetFinDetude/image.png")  
login_form = driver.find_element_by_xpath("/html/body/div/h1/div[1]").click();

But I get:

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: /html/body/div/h1/div[1]

how to click on button Download bounding boxes on python by selenium , the html

<h1 style="position: relative"><a href="/">Scene Text Detection Demos</a>

        <div aria-label="..." role="group" class="btn-group" style="position: absolute; bottom: 10px; right: 0px;">
            <!--<button id="toggle_text_propoals" type="button" class="btn btn-success btn-sm">Show text proposals</button>-->
            <a href="download_bboxes/acdb4bb9-8b73-4020-bfe5-737316033e5e" type="button" class="btn btn-success btn-sm">Download bounding boxes</a>
        </div>

      </h1>

2 Answers 2

2

The button is in <a> tag, not <div> tag. You also have only one <div> so div[1] is invalid. You can search by the text

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

button = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//a[contains(., "Download bounding boxes")]')))
button.click();

Or by class since you have only one button so class btn should be unique.

driver.find_element_by_class_name('btn').click(); # or 'btn-success' or 'btn-sm'

By the way, click() doesn't return anything, you can't assign it to login_form.

Sign up to request clarification or add additional context in comments.

6 Comments

Error selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: //a[contains(., "Download bounding boxes")]
problem :` button = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//a[contains(., "Download bounding boxes")]'))) NameError: name 'WebDriverWait' is not defined`
@Brahimce Did you add the imports?
an other error ` button = WebDriverWait(driver,5).until(EC.visibility_of_element_located((By.XPATH, '//a[contains(., "Download bounding boxes")]'))) NameError: name 'By' is not defined `
I want to click button "Download bounding boxes" after the load of page
|
1

The button is under an <a> tag so we write code for Xpath:

 driver.find_element_by_xpath("//a[. = 'Download bounding boxes']").click()

so it finds the text is "Download bounding boxes" on the website and clicks on it. In the code above // a is written because the button was inside the <a> tag we can write //span,//div as well if the code was under a span or divtag.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.