Selenium WebDriver StaleElementReferenceException
我在运行测试时收到此错误:org.openqa.selenium.StaleElementReferenceException:Element不再附加到DOM
关于如何解决上述异常的任何想法?这发生在我的网格中,它有一个动态的ref Xpath表达式
我在运行测试时收到此错误:org.openqa.selenium.StaleElementReferenceException:Element不再附加到DOM
关于如何解决上述异常的任何想法?这发生在我的网格中,它有一个动态的ref Xpath表达式
我遇到了同样的问题,找不到任何解决方案。想出一个解决方案并发布在这里,希望这有助于有同样问题的人。我创建了一个类来处理过时的元素,具体取决于它们的类型,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出现问题的元素上使用它。
我们通过执行称为WebdriverWrapper和WebElementWrapper的东西来解决此问题。
这些包装器的作用是处理其中的 StaleElementException,然后使用定位器重新评估并获取新的 WebElement 对象。这样,您需要将处理异常的代码分散到整个代码库中,并将其本地化为一个类。
我很快就会研究这几个课程的开源,如果你们感兴趣,我会在这里添加一个链接。