运行测试时出现以下错误: org.openqa.selenium.StaleElementReferenceException:元素不再附加到DOM
有关于如何解决上述异常的想法吗?这发生在我的网格中,它有一个动态的ref Xpath表达式
发布于 2011-09-20 00:55:44
我遇到了同样的问题,但找不到任何解决方案。想出了一个解决方案并把它贴在这里,希望这对有同样问题的人有所帮助。我创建了一个类来根据类型、cssselector、id等来处理过时的元素,并简单地像调用其他页面对象一样调用它。
public void StaleElementHandleByID (String elementID)
{
int count = 0;
boolean clicked = false;
while (count < 4 && !clicked)
{
try
{
WebElement yourSlipperyElement= driver.findElement(By.id(elementID));
yourSlipperyElement.click();
clicked = true;
}
catch (StaleElementReferenceException e)
{
e.toString();
System.out.println("Trying to recover from a stale element :" + e.getMessage());
count = count+1;
}
}
}我建议只在你知道会给WebDriver带来问题的元素上使用它。
发布于 2011-03-01 00:29:11
我们通过做一些叫做WebdriverWrapper和WebElementWrapper的事情来解决这个问题。
这些包装器所做的就是处理内部的StaleElementException,然后使用定位器重新计算并获取新的WebElement对象。这样,您需要将处理异常的代码分散到代码库中,并将其本地化到一个类中。
如果你们感兴趣,我很快就会研究开源这几个类,并在这里添加一个链接。
发布于 2011-02-01 00:49:18
当您尝试使用页面上不再存在的WebElement的方法时,将引发该异常。如果您的网格正在动态加载数据,而您刷新了该网格,则对该网格上的元素的任何引用都将是“过时的”。仔细检查您尝试引用的元素是否在测试中的页面上,并且您可能需要重新实例化对象。
https://stackoverflow.com/questions/4846454
复制相似问题