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>

「有効」が文字列として渡された場合、可視テキスト Enabled を持つ最初のラジオ ボタンを選択できるはずです。「無効」が文字列として渡された場合、可視テキストを持つラジオ ボタンを選択できるはずです。 、 無効。

ラジオボタンの名前が同じで困っています。以下のコードは、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();

テキストを無効にする2番目のラジオボタンを選択する場合

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 に答える