python selenium点击没有Id和名称的按钮

时间:2017-05-10 05:42:30

标签: python selenium selenium-webdriver

我有一个按钮,我想点击这个按钮,我做

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

我的代码:

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();

但我明白了:

  

selenium.common.exceptions.NoSuchElementException:消息:无法执行   locate元素:/ html / body / div / h1 / div [1]

如何点击Download bounding boxes python上的selenium按钮,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 个答案:

答案 0 :(得分:1)

该按钮位于<a>标记中,而不是<div>标记。您还只有一个<div>,因此div[1]无效。您可以按文字搜索

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();

或者按类,因为你只有一个按钮,所以类btn应该是唯一的。

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

顺便说一句,click()没有返回任何内容,您无法将其分配给login_form

答案 1 :(得分:0)

该按钮位于<a>标签下,因此我们为Xpath编写代码:

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

,因此它找到该文本为网站上的“下载边界框”,然后单击它。 在//上面的代码中编写a是因为按钮位于<a>标记内,如果代码在{{1}下,我们也可以编写//span//div }或span标签。