2013-03-19 48 views
-2
<br> 
<input id="workedWithGR" type="radio" onclick="showDiv('hiddenInput');" value="yes" checked="" name="workedWithGR" style="border:none;"> 

<label>Yes</label> 

<input id="workedWithGR" type="radio" onclick="hideDiv('hiddenInput');" value="no" name="workedWithGR" style="border:0px;"> 

对于是和否的按钮我不断收到“Webdriver找不到元素错误”。我无法执行xpath,因为ID中有引号。Selenium webdriver无法识别这个无线电元素。有人能帮助我吗?

+0

只是用“\”来避开引号。你能发布一个html代码片段吗? – 2013-03-19 20:38:42

+0

Selenio 2013-03-19 20:39:37

+0

这里是xpath // * [@ id =“workedWithGR”] – Selenio 2013-03-19 20:40:22

回答

2

使用标签“value”代替或者子节点“label”然后递归地上行选择正确的元素。比如我假设你的HTML有以下几点:

<br> 
    <input id="workedWithGR" type="radio" onclick="showDiv('hiddenInput');" value="yes" checked="" name="workedWithGR" style="border:none;"> 
    <label>Yes</label> 
    <input id="workedWithGR" type="radio" onclick="hideDiv('hiddenInput');" value="no" name="workedWithGR" style="border:0px;"> 
    <label>No</label> 

所以你可以试试下面的键控关闭节点标签:

//input[@id=\"workedWithGR\"]/label[text()="Yes"]/../input 
+0

+1的答案,似乎是一个合理的解决方案,只是另一个可能的XPath(不打算再放一个答案,因为这个工作正常)可能是:'// label [text()=“是“]/ancestor :: input [@ id =”workedWithGR“]'...两者都会得到相同的结果。 – Arran 2013-03-20 09:42:08

0

我用这种方法进行无线电输入。避免使用具有相同名称的可变数量的单选按钮来查找多个输入元素/作品。

String valueToSelect = "no"; 
List<WebElement> radios = driver.findElement(By.name("workedWithGR")); 
if (radios.size() == null) 
    return ; 

for (WebElement radio : radios){ 
    if (radio.getAttribute("value").equals(valueToSelect)){ 
     radio.click(); 
     break; 
    } 
} 
相关问题