无法选择单选按钮“ NoSuchElementException:没有这样的元素:无法找到元素”错误

时间:2019-09-12 17:07:36

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

我正在尝试从给定的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();

1 个答案:

答案 0 :(得分:1)

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

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

(1)检查XPath是否正确

  1. 打开Chromedriver并转到要测试的网站
  2. 按F12键打开控制台(一旦打开,请单击“控制台”选项卡)
  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");