选中复选框将Selenium与Python结合使用

2024-06-09 00:26:19 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用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,但没有检测到它。应该使用什么


Tags: fromimportbrowseridurlseleniumcommonkeys
3条回答

您也可以这样尝试:

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

^{}与XPath表达式.//*[contains(text(), 'txt')]一起使用,以查找包含txt作为文本的元素

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

更新

文档加载后会加载某些内容。我修改了代码,尝试了10次(间隔1秒睡眠)

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 1 second')
        time.sleep(1)
else:
    raise e

复选框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

相关问题 更多 >