使用Selenium和Python选中复选框

296*_*502 30 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()
Run Code Online (Sandbox Code Playgroud)

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

我试着为id,name,link_text但无法检测应该用什么?

fal*_*tru 20

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

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

UPDATE

文档加载后会加载一些内容.我修改了代码尝试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
Run Code Online (Sandbox Code Playgroud)


Mar*_*ari 8

复选框HTML是:

<input id="C179003030-ORNL_DAAC-box" name="catalog_item_ids[]" type="checkbox" value="C179003030-ORNL_DAAC">
Run Code Online (Sandbox Code Playgroud)

所以你可以使用

browser.find_element_by_id("C179003030-ORNL_DAAC-box").click()
Run Code Online (Sandbox Code Playgroud)

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

检查元素


Car*_*585 7

你也可以这样试试:

browser.find_element_by_xpath(".//*[@id='C179003030-ORNL_DAAC-box']")
Run Code Online (Sandbox Code Playgroud)

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

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

点击:

browser.find_element_by_xpath(".//*[@id='C179003030-ORNL_DAAC-box']").click()
Run Code Online (Sandbox Code Playgroud)

  • `.get_attribute()` 非常有用!!谢谢 (2认同)