无法显示 select 单选按钮 "NoSuchElementException: no such element: Unable to locate element" 错误

Not able to select radio button "NoSuchElementException: no such element: Unable to locate element" error is displayed

我正在尝试从给定的 3 个单选按钮中 select 一个单选按钮,但我没有得到这样的元素异常。

这是所有 3 个单选按钮的 HTML 代码:

<div class="radioGroup">
<div>
    <div class="radio">
        <div class="radioVal"></div>
        <label><span><img src="https://s3.amazonaws.com/xyz.png" alt="AltText1">Radio Button1</span></label>
    </div>
    <div class="radio">
        <div class="radioVal"></div>
        <label><span><img src="https://s3.amazonaws.com/xyz1.png" alt="AltText2">Radio Button2</span></label>
    </div>
    <div class="radio">
        <div class="radioVal"></div>
        <label><span><img src="https://s3.amazonaws.com/xyz3.png" alt="AltText3">Radio Button3</span></label>
    </div>
</div>

我将此代码用于 select 单选按钮:

WebElement Radio2 = driver.findElement(By.xpath("//img[contains(@alt, 'AltText2')]"));
Radio2.click();

通常发生这种情况的原因是两个原因之一。

  1. XPath 不正确
  2. 您需要在 driver.findElement 语句中添加等待时间

(1)检查XPath是否正确

  1. 打开Chrome驱动程序并转到您正在测试的网站
  2. 按 F12 打开控制台(打开后单击 'Console' 选项卡)
  3. 在 Chrome 浏览器控制台中键入以下内容,查看是否返回任何对象
  4. $x("//img[包含(@alt, 'AltText2')]")

(2) 等待元素可点击

System.TimeSpan timeToWait = new TimeSpan(0, 0, 10);
WebDriverWait wait = new WebDriverWait(driver, timeToWait);
IWebElement htmlElementOnPage = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//img[contains(@alt, 'AltText2')]")));

此外,我在您的 html 中没有看到任何单选按钮。但我猜你实际上并不想点击标签,而是想点击标签上方的标签?

如果这是正确的,您的 xpath 应该指向 div,而不是 div 旁边的标签 ...

By.Xpath("//img[contains(@alt, 'AltText2')]/../div");