gpt4 book ai didi

java - 如何处理 StaleElementReferenceException

转载 作者:行者123 更新时间:2023-12-01 22:29:00 27 4
gpt4 key购买 nike

我有一个场景,我试图循环遍历条形图上的多个元素,直到找到“rect”标签名称。当我单击“矩形”标签名称时,将从图表中选择单个栏,并且我将重定向到另一个页面。请参阅下面我正在使用的条形图的图像: /image/U4LNm.jpg

作为引用,我正在使用的条形图位于右上角。我要执行的测试是单击图表中的第一个条;这样做会将我重定向到适当的页面。为此,我使用 Eclipse (Java) 在 Selenium Webdriver 中编写了以下代码:

WebElement deliveredChartDailyFocus = driver.findElement(By.id("delivered-chart-daily"));
deliveredChartDailyFocus.click();

List<WebElement> children = deliveredChartDailyFocus.findElements(By.tagName("rect"));
Iterator<WebElement> iter = children.iterator();

while (iter.hasNext()) {
WebElement we = iter.next();

if(we.isDisplayed()){
we.click();
}

一切似乎都运行良好,因为上面的代码点击了“rect”元素并将我重定向到适当的页面。然而,当我点击该页面时,我收到一个错误,因为代码仍在寻找不在新页面上的“矩形”值。

您会注意到上面缺少一个“break”行……这是因为,在调试代码时,我发现在迭代循环时,单击事件直到第三次迭代才会启动,我假设是因为“rect”元素不可见?因此,如果我放入“break”语句,它会在第一次迭代后退出循环,因此我永远不会到达执行“click”事件以导航到新页面的部分。

本质上,我所追求的是一种能够根据需要循环多次直到找到适当的“矩形”元素的方法。单击该按钮后,我将被重定向到新页面……只有在那时我才希望退出循环,以便不显示“NoSuchElementException 错误。

如果需要更多详细信息,请告诉我,非常感谢对此的任何指导。

最佳答案

一旦进入新页面,所有这些 rect 元素都会消失。对这些 rect 元素进行任何引用都将触发此 StaleElementReferenceException

所以不要在点击后引用这些元素。迭代到第一个显示的 rect 元素,然后停止迭代。

WebElement deliveredChartDailyFocus = driver.findElement(By.id("delivered-chart-daily"));
deliveredChartDailyFocus.click();

// Get a list of all the <rect> elements under the #delivered-chart-daily element
List<WebElement> children = deliveredChartDailyFocus.findElements(By.tagName("rect"));

WebElement elementToClick = null; // variable for the element we want to click on
for (WebElement we : children) // loop through all our <rect> elements
{
if (we.isDisplayed())
{
elementToClick = we; // save the <rect> element to our variable
break; // stop iterating
}
}

if (elementToClick != null) // check we have a visible <rect> element
{
elementToClick.click();
}
else
{
// Handle case if no displayed rect elements were found
}

关于java - 如何处理 StaleElementReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28193303/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com