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

Unable to locate either of the radio buttons if both values are same

我是学习 Selenium 的新手,请帮助我找到一个单选按钮。

当我尝试单击单选按钮(静态或动态)时,我无法单击任何一个或那些 我使用 Xpath 尝试了以下命令。但其中 none 有效

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;"> ==[=11=]
<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;">==[=11=]
<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();

由于与文本 Static 关联的 单选按钮 是一个动态元素,因此您需要在其上调用 click() induce 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();