【问题标题】:Not able to select radio button "NoSuchElementException: no such element: Unable to locate element" error is displayed无法选择单选按钮“NoSuchElementException:没有这样的元素:无法找到元素”错误显示
【发布时间】:2020-01-14 14:47:42
【问题描述】:

我正在尝试从给定的 3 个单选按钮中选择一个单选按钮,但没有出现此类元素异常。

这是所有 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>

我正在使用此代码选择单选按钮:

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

【问题讨论】:

  • 您添加了等待吗?您是否查看过元素是否在 IFRAME 中?

标签: java selenium-webdriver selenium-chromedriver browser-automation webautomation


【解决方案1】:

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

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

(1) 检查XPath是否正确

  1. 打开 Chromedriver 并转到您正在测试的网站
  2. 按 F12 打开控制台(打开后单击“控制台”选项卡)
  3. 在 Chrome 浏览器控制台中输入以下内容,查看是否返回任何对象
  4. $x("//img[contains(@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");

【讨论】:

  • 问题是我使用了隐式等待。添加显式等待该步骤后,它运行成功。
猜你喜欢
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 2021-03-16
  • 2017-12-08
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多