2014-01-19 27 views
16

如果有人知道如何使用Selenium和Python选择复选框,那该多好。使用Python选择使用Selenium的复选框

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分钟流流数据的复选框:美国地质勘探局(FIFE

我尝试作为idnamelink_text但无法检测应该用什么

回答

11

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

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

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 
+0

提供的等待,很抱歉地告诉您,您的代码在我的电脑中不工作。 @falsetru – 2964502

+0

@viena,我在发布之前测试了代码。 (Windows 7 64bit,Python 2.7.6,硒2.33.0) – falsetru

+0

哎呀!我正在使用Windows 7 64位Python 3.2,硒2.39 @falsetru – 2964502

4

?复选框HTML是:

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

所以你可以使用

0你可以找到元素的属性
browser.find_element_by_id("C179003030-ORNL_DAAC-box").click() 

一种方法是使用谷歌Chrome开发人员工具:

Inspect element

+0

它没有工作,你检查? @ l19 – 2964502

+0

@viena,不,我没有测试它。 –

+0

您的代码也可以工作,因为使用等于falsetru – 2964502

0

您可以用这种方式尝试,以及:

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

所以你可以试试这个:

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