gpt4 book ai didi

java - 如何使用Chrome浏览器处理 "StaleElementReferenceException"

转载 作者:行者123 更新时间:2023-11-29 03:15:39 27 4
gpt4 key购买 nike

我正在测试新建的框架,在 Chrome 浏览器中工作时经常遇到 org.openqa.selenium.StaleElementReferenceException。框架设计会不会有问题?当我在其他浏览器中运行测试时没有问题。我尝试了多种类型的自定义等待,它们捕获 StaleElementReferenceException,然后循环查找元素,但没有成功。

有没有人遇到过类似的问题并找到了解决方案?

Chrome 版本:38.0.2125.111
Selenium 版本:2.43.1

public WebElement waitTill(By by){
WebElement ele = null;
for(int i=0; i<15; i++){
try {
ele = driver.findElement(by);
if(ele==null)
Thread.sleep(2000); //in last attempt used thread...we wont use this in actual practice
else
break;
} catch (NoSuchElementException | InterruptedException e) {
System.out.println(e.getMessage());
}
}
return ele;
}

public WebElement getElement(String loc) {
String locator = initUtils.ORProp.getProperty(loc);
WebElement element = null;
try{
By by = getBy(locator);
element = waitTill(by);
}catch(NoSuchElementException e){
System.out.println(e.getMessage());
}catch(StaleElementReferenceException e){
By by = getBy(locator);
element = waitTill(by);
}
return element;
}

最佳答案

这种错误是由于网页在两次检查元素之间发生变化而引起的。

我不敢说,这个异常主要是由错误的测试引起的。需要检查的几件事是:

  • 确保在您访问页面时给页面加载时间在你开始与它互动之前,即使你认为它已经完成加载它可能仍在等待中的某些东西背景,当它到达时页面发生变化。

  • 确保如果您与任何改变页面的元素交互确保您再次等待页面更改和任何 html 请求进行处理。

这两个问题可能是您大部分问题的原因,我建议使用使用 jQuery ajax 启动和停止的 ajax,以确保在修改页面之前加载该页面。您需要记住的是,selenium 比用户可能与页面交互的速度要快得多,您需要通过增加检查来处理它。

我还建议在尝试与元素交互之前检查元素是否在页面上以及它是否可见。

在更糟糕的情况下,您可以使用 try 和 catch block 来检查元素,但如果您确保页面没有更改,那么您不应该得到异常。由于浏览器速度和网络驱动程序速度,浏览器之间确实存在差异。

我使用的一些代码是:

var finished = false;

function ready() {
if (finished == true) {
$( "#main" ).addClass("ready");
}
}

$( document ).ajaxStart(function() {
$( "#main" ).removeClass("ready");
finished = false;
});

$( document ).ajaxStop(function() {
finished = true;
window.setTimeout(ready,500);
});'

这会检查页面是否已完全加载并且没有待处理的请求,我只是在浏览器打开后执行此操作,然后我可以检查该类是否存在,如果存在,我就可以开始了。每当页面更改时,我也会调用相同的检查。

关于java - 如何使用Chrome浏览器处理 "StaleElementReferenceException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26852049/

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