无法显示 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();
通常发生这种情况的原因是两个原因之一。
- XPath 不正确
- 您需要在 driver.findElement 语句中添加等待时间
(1)检查XPath是否正确
- 打开Chrome驱动程序并转到您正在测试的网站
- 按 F12 打开控制台(打开后单击 'Console' 选项卡)
- 在 Chrome 浏览器控制台中键入以下内容,查看是否返回任何对象
- $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");
我正在尝试从给定的 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();
通常发生这种情况的原因是两个原因之一。
- XPath 不正确
- 您需要在 driver.findElement 语句中添加等待时间
(1)检查XPath是否正确
- 打开Chrome驱动程序并转到您正在测试的网站
- 按 F12 打开控制台(打开后单击 'Console' 选项卡)
- 在 Chrome 浏览器控制台中键入以下内容,查看是否返回任何对象
- $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");