如果两个值相同,则无法找到两个单选按钮

时间:2019-01-09 09:52:18

标签: java selenium selenium-webdriver xpath webdriverwait

我是学习Selenium的新手,请帮助我定位单选按钮。

当我尝试单击单选按钮(静态或动态)时,我无法单击 enter image description here 我在下面使用Xpath尝试了命令。但是他们都不起作用

1。//input[@type='radio' and @value='on'][1]

2。//p[text()='Static']

尝试的命令:

driver.findElement(By.xpath("//input[@type='radio' and @value='on'][1]")).click();
driver.findElement(By.xpath("(//*[text()='Static'])[1]")).click();
driver.findElement(By.xpath("//p[text()='Static']")).click();

从开发人员工具获得的单选按钮的HTML脚本:

<div class="Radio__radio___1xD3w" style="display: inline-block; margin-right: 36px; margin-top: 10px;"> ==$0
<input type="radio" class="Radio__radio-btn___E4u40" name="" value="on"><p class="Radio__radio-label___26Ok6">Static</p>
</div>
<div class="Radio__radio___1xD3w" style="display: inline-block; margin-top: 10px;">==$0
<input type="radio" class="Radio__radio-btn___E4u40" name="" value="on">
<p class="Radio__radio-label___26Ok6">Dynamic</p></div>

代码试用:

driver.findElement(By.xpath("(//*[text()='Static'])[1]")).click();
driver.findElement(By.xpath("//p[text()='Static']")).click();
driver.findElement(By.xpath("//input[@type='radio' and @value='on'][1]")).click();

1 个答案:

答案 0 :(得分:-1)

由于与文本静态关联的单选按钮是动态元素,因此要调用click(),您需要引入 WebDriverWait ,您可以使用以下解决方案:

  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//p[starts-with(@class,'Radio__radio-label___') and contains(., 'Static')]//preceding::input[1]"))).click();