Selenium webdriver无法识别此无线电元素。有人可以帮我吗?

时间:2013-03-19 20:37:09

标签: java selenium radio-button webdriver

<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中有引号。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;
    }
}