Arm*_*ndo 30
我遇到了同样的问题,找不到任何解决方案.想出一个解决方案并将其发布在这里,希望这可以帮助有同样问题的人.我创建了一个类来处理陈旧元素,具体取决于它们的类型,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;
}
}
Run Code Online (Sandbox Code Playgroud)
我建议只在你知道导致WebDriver出现问题的元素上使用它.
小智 8
我们通过做一些名为WebdriverWrapper和WebElementWrapper的事来解决这个问题.
这些包装器所做的是处理其中的StaleElementException,然后使用定位器重新计算并获取新的WebElement对象.这样,您需要在代码库中传播处理异常的代码,并将其本地化为一个类.
我将很快调查这几个类的开源,如果你有兴趣,我会在这里添加一个链接.
| 归档时间: |
|
| 查看次数: |
37972 次 |
| 最近记录: |