使用Selenium和Python选中复选框

时间:2014-01-19 05:05:11

标签: python selenium

如果有人知道如何使用Selenium和Python选择复选框,那就太好了。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

browser = webdriver.Firefox()
url = 'any url'
browser.get(url)

browser.find_element_by_id("15 Minute Stream Flow Data: USGS (FIFE)").click()

我想选择与15分钟流量数据相对应的复选框:USGS(FIFE。

我尝试idnamelink_text,但无法检测应该使用的内容?

6 个答案:

答案 0 :(得分:17)

find_element_by_xpath与xpath表达式.//*[contains(text(), 'txt')]一起使用,以查找包含txt文本的元素。

browser.find_element_by_xpath(
    ".//*[contains(text(), '15 Minute Stream Flow Data: USGS (FIFE)')]"
).click()

<强>更新

文档加载后会加载一些内容。我修改了代码尝试10次(1s睡眠中间)。

import time

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException

browser = webdriver.Firefox()
url = 'http://reverb.echo.nasa.gov/reverb/'
browser.get(url)

for i in range(10):
    try:
        browser.find_element_by_xpath(
            ".//*[contains(text(), '15 Minute Stream Flow Data: USGS (FIFE)')]"
        ).click()
        break
    except NoSuchElementException as e:
        print('retry in 1s.')
        time.sleep(1)
else:
    raise e

答案 1 :(得分:7)

复选框HTML为:

<input id="C179003030-ORNL_DAAC-box" name="catalog_item_ids[]" type="checkbox" value="C179003030-ORNL_DAAC">

所以你可以使用

browser.find_element_by_id("C179003030-ORNL_DAAC-box").click()

您可以使用Google Chrome开发者工具找到元素属性的一种方法:

Inspect element

答案 2 :(得分:4)

您也可以尝试这种方式:

browser.find_element_by_xpath(".//*[@id='C179003030-ORNL_DAAC-box']")

如果您想知道它是否已经检查过:

browser.find_element_by_xpath(".//*[@id='C179003030-ORNL_DAAC-box']").get_attribute('checked')

点击:

browser.find_element_by_xpath(".//*[@id='C179003030-ORNL_DAAC-box']").click()

答案 3 :(得分:0)

所以你也可以试试这个:

browser = webdriver.Firefox()
url = 'http://reverb.echo.nasa.gov/reverb/'
browser.get(url) 
browser.find_element_by_name("catalog_item_ids[]").click()

答案 4 :(得分:0)

这是使用硒python进行点击的最佳方法

    from selenium import webdriver

    from selenium.webdriver.common.keys import Keys

    browser = webdriver.Firefox()

    url = 'any url'

    browser.get(url)

    box=browser.find_element_by_xpath("paste the xpath here")

    browser.execute_script("arguments[0].click();",box)

答案 5 :(得分:0)

处理元素“复选框”(如果有文本)的最佳方法是使用JavaScript函数从网页中提取元素:

例如://*[text()='text on element']

在这里,您还可以在提取复选框时使用相同的内容,并使用click()函数进行检查。

driver = webdriver.Chrome()
url = "URl of site"
driver.get(url)
checkbox = driver.find_element_by_xpath(//*[text()='text on element'])
checkbox.click()

要检查元素是否被选中,可以使用get_attribute()函数。

例如:checkbox.get_attribute('checked')