我希望能够根据用户输入选择单选按钮。此单选按钮具有多个具有相同名称的选项。
<th class="radio">
<td>
<label for="form-1-input-3">
<input id="form-1-input-3" type="radio" checked="" value="true" name="enabled">
Enabled
</label>
<label for="form-1-input-4">
<input id="form-1-input-4" type="radio" value="false" name="enabled">
Disabled
</label>
如果“enabled”作为字符串传递,我应该能够选择第一个具有可见文本的单选按钮,Enabled,如果“disabled”作为字符串传递,我应该能够选择单选按钮有可见文字,已禁用。
由于单选按钮的名称相同,我遇到了困难。下面的代码无法找到带有X运算符的AND运算符的元素。有没有人以前遇到过这个并找到了解决方案?
String enableRadioButtonXPath = "//input[contains(@id,'form-') and contains(@value, 'enabled')]";
String enableRadioButtonOption = "enabled";
String disableRadioButtonOption = "disabled";
WebElement enableRadioButton = webdriver1.findElement(By.name(enableRadioButtonOption));
enableRadioButton.click();
答案 0 :(得分:10)
这个逻辑可能对你有用。
用于选择定位器下方的第一个单选按钮
driver.findElement(By.xpath("//label[contains(.,'Enable')]/input")).click();
用于选择禁用文本的第二个单选按钮
driver.findElement(By.xpath("//label[contains(.,'Disable')]/input")).click();
答案 1 :(得分:4)
也许这可能会有所帮助:
public void selectByName (final WebDriver driver, final String status) {
final List<WebElement> radios = driver.findElements(By.name("enabled"));
for (WebElement radio : radios) {
if (radio.getText().equals(status)) {
radio.click();
}
}
}
答案 2 :(得分:1)
获取用户输入并分配给名为Usrinput
List<WebElement> radiobuttons = driver.findElements(By.name("radiobuttonname"));
for(WebElement radiobutton: radiobuttons) {
if(radiobutton.getAttribute("value").equals("Usrinput"))
radiobutton.click();
}