在Python中使用Selenium单击/选择单选按钮

时间:2014-01-24 00:22:33

标签: python selenium selenium-webdriver

我试图从3个按钮的列表中进行选择,但找不到选择它们的方法。以下是我正在使用的HTML。

<input name="pollQuestion" type="radio" value="SRF"> 
    <font face="arial,sans-serif" size="-1">ChoiceOne</font><br />
<input name="pollQuestion" type="radio" value="COM">
    <font face="arial,sans-serif" size="-1">ChoiceTwo</font><br />
<input name="pollQuestion" type="radio" value="MOT">
    <font face="arial,sans-serif" size="-1">ChoiceThree</font>

我可以使用以下代码找到它:

for i in browser.find_elements_by_xpath("//*[@type='radio']"):
     print i.get_attribute("value")

输出:SRF,COM,MOT

但我想选择ChoiceOne。 (点击它)我该怎么做?

5 个答案:

答案 0 :(得分:34)

使用CSS Selector或XPath直接选择value属性,然后单击它。

browser.find_elements_by_css("input[type='radio'][value='SRF']").click
# browser.find_element_by_xpath(".//input[@type='radio' and @value='SRF']").click

更正(但OP应该学习如何在文档中查找)

  • 在Python绑定中,find_elements_by_css不存在,它被称为find_elements_by_css_selector。一个人应该能够查看异常消息并回顾文档here并找出原因。
  • 请注意find_element_by_css_selectorfind_elements_by_css_selector之间的区别?第一个找到第一个匹配元素,第二个找到一个列表,所以你需要使用[0]来索引。 Here是API文档。我使用后者的原因是因为我复制了你的代码,我不应该这样做。

答案 1 :(得分:1)

find_elements_by_css_selector为我工作,

browser.find_elements_by_css_selector("input[type='radio'][value='SRF']")[0].click()

答案 2 :(得分:1)

Enter image description here

Selenium webdriver单选按钮单击

当我使用xpath时:

driver.find_element_by_xpath("//input[@id='id_gender2']").click()

未选中单选按钮

但是我使用了css_selector:

driver.find_element_by_css_selector("input#id_gender1").click() 

选中单选按钮

答案 3 :(得分:1)

也没有为我选择第一个单选按钮。但是在插入时间后,它对我有用。

driver.find_element_by_class_name("login").click()
driver.find_element_by_id("email_create").send_keys("testsel000@gmail.com")
driver.find_element_by_id("SubmitCreate").click()
time.sleep(2)
driver.find_element_by_css_selector("#id_gender2").click()

答案 4 :(得分:0)

browser.find_elements_by_xpath(".//input[@type='radio' and @value='SRF']")[0].click

这最终成了修复。我在没有[0]的情况下遇到错误,列表没有click()属性(即使只有1个匹配)。感谢您帮助user1177636!