如果有人知道如何使用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)
复选框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开发者工具找到元素属性的一种方法:

你也可以这样试试:
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)
| 归档时间: |
|
| 查看次数: |
47662 次 |
| 最近记录: |