我希望能够选择由name属性标识的组(单选按钮)中的单选按钮:
<div>
<input type="radio" name="exampleInputRadio" id="optionRadio1" value="1">
<input type="radio" name="exampleInputRadio" id="optionRadio2" value="2">
<input type="radio" name="exampleInputRadio" id="optionRadio3" value="3">
<input type="radio" name="exampleInputRadio" id="optionRadio4" value="4">
</div>
我使用以下代码来做我想要的事情:
public void exampleInputRadio(WebDriver driver, int option) {
List<WebElement> radios = driver.findElements(By.name("exampleInputRadio"));
if (option > 0 && option <= radios.size()) {
radios.get(option - 1).click();
} else {
throw new NotFoundException("option " + option + " not found");
}
}
问题是Selenium总是选择第一个单选按钮,无论option
参数的值是什么。
当我用上述方法编写代码时:
for (int i = 0; i < radios.size(); i++) {
System.out.println(radios.get(i).getAttribute("id"));
}
我得到了这个输出:
optionRadio1
optionRadio2
optionRadio3
optionRadio4
答案 0 :(得分:0)
一个简单的解决方法是使用value
或id
归属。
driver.findElement(By.id("optionRadio" + (option + 1))).click();
答案 1 :(得分:0)
在Firefox 28上,代码对我来说绝对正常。 我尝试过这样的事情:
功能:
public void exampleInputRadio(WebDriver driver, int option) {
List<WebElement> radios = driver.findElements(By.name("exampleInputRadio"));
if (option > 0 && option <= radios.size()) {
radios.get(option - 1).click();
} else {
throw new NotFoundException("option " + option + " not found");
}
}
函数调用:
TestClass tc = new TestClass();
tc.exampleInputRadio(driver, 1);
tc.exampleInputRadio(driver, 2);
tc.exampleInputRadio(driver, 3);
tc.exampleInputRadio(driver, 4);
答案 2 :(得分:0)
Also you can use xpath, something like this:
driver.findElement(By.xpath("//input[@value='1]")).click();