在Selenium Webdriver中根据用户输入选择单选按钮

时间:2013-02-13 08:08:02

标签: selenium-webdriver

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

<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();

3 个答案:

答案 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();
}