Selenium:Select 按值(或标签文本)标记的 RadioButton

Selenium: Select RadioButton in Label by Value (or Label Text)

我是 Selenium 的新手,想要 select 一组标签内的 RadioButton,请参见屏幕截图。问题是,所有 <input> 元素都具有相同的名称!所以我必须 select 按值(或按标签文本?)...

我正在为 Selenium 使用 Java API。

** 作为HTML **

<table width="100%" border="1">
...
<label>
<input type="radio" name="AktarmaSekli" value="SP" checked class="radio" onclick="_doClick('$Refresh', this, '_self', '#_RefreshKW_AktarmaSekli')">Sipariş Planı</label><br>
<label>
<input type="radio" name="AktarmaSekli" value="DF" class="radio" onclick="_doClick('$Refresh', this, '_self', '#_RefreshKW_AktarmaSekli')">DAG Fatura Bilgileri</label><br>
<label>
<input type="radio" name="AktarmaSekli" value="ATR" class="radio" onclick="_doClick('$Refresh', this, '_self', '#_RefreshKW_AktarmaSekli')">ATR Bilgileri</label><br>
<label>
<input type="radio" name="AktarmaSekli" value="AITM" class="radio" onclick="_doClick('$Refresh', this, '_self', '#_RefreshKW_AktarmaSekli')">AİTM Bilgileri</label><br>
<label>
<input type="radio" name="AktarmaSekli" value="COC" class="radio" onclick="_doClick('$Refresh', this, '_self', '#_RefreshKW_AktarmaSekli')">CoC Bilgileri</label><br>
<label>
<input type="radio" name="AktarmaSekli" value="Bakim" class="radio" onclick="_doClick('$Refresh', this, '_self', '#_RefreshKW_AktarmaSekli')">Bakım Faturaları</label><br>
<label>
<input type="radio" name="AktarmaSekli" value="AF" class="radio" onclick="_doClick('$Refresh', this, '_self', '#_RefreshKW_AktarmaSekli')">Araç Bilgileri</label></td></tr>
</table>

我用下面的代码让它工作!!!

private void selectRadioButtonByValue(WebDriver driver, String radioGroupName, String valueToFind) {
    List<WebElement> radioGroup = driver.findElements(By.name(radioGroupName));
     for (int i = 0; i < radioGroup.size(); i++) {
        if(radioGroup.get(i).getAttribute("value").equals(valueToFind)) {
            radioGroup.get(i).click();
            return;
        }
     }
     throw new org.openqa.selenium.NotFoundException("Element wasn't found by value!");
}

很高兴知道您有解决方案..下面的一个可能也有帮助..

如果你试图点击特定的按钮,如果它有值说 'ATR' 你可以简单地构建 xpath(或 css 选择器) //input[@value='ATR'] 或 //input[contains(text(),'ATR Bilgileri')]

当然还有其他方法可以找到所需的元素..

谢谢, 穆拉利

在页面对象模式中它将是:

@FindBy(xpath = "//*[contains(text(),'ATR Bilgileri')]")
WebElement radioATR;