7

我希望能够根据用户输入选择一个单选按钮。此单选按钮有多个同名选项。

<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>

如果“启用”作为字符串传递,我应该能够选择第一个具有可见文本的单选按钮启用,如果“禁用”作为字符串传递,我应该能够选择具有可见文本的单选按钮, 禁用。

由于单选按钮的名称相同,我遇到了困难。下面的代码找不到 Xpath 的 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();
4

3 回答 3

10

这个逻辑可能对你有用。

要选择第一个单选按钮,请使用下面的定位器

 driver.findElement(By.xpath("//label[contains(.,'Enable')]/input")).click();

用于选择具有禁用文本的第二个单选按钮

driver.findElement(By.xpath("//label[contains(.,'Disable')]/input")).click();
于 2013-02-13T08:20:08.577 回答
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();
        }
    }
}
于 2013-02-13T12:13:12.293 回答
1

获取用户输入并分配给一个名为的变量Usrinput

List<WebElement> radiobuttons = driver.findElements(By.name("radiobuttonname"));
    for(WebElement radiobutton: radiobuttons) { 

    if(radiobutton.getAttribute("value").equals("Usrinput"))
        radiobutton.click();
}
于 2014-10-04T08:22:09.903 回答