gpt4 book ai didi

java - 稳定元素引用异常 : Element not found in the cache - perhaps the page has changed since it was looked up

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:08:05 25 4
gpt4 key购买 nike

我的代码如下,代码是通过xpath获取设置的元素,生成一个list<String>与元素集中每个元素的文本。但是在将每个元素的文本添加到新的 List<String> 的过程中总是抛出异常.

protected List<String> getHeaders(String path){
List<String> headers = new ArrayList<String>();
int count = 0;
List<WebElement> elements = findAllByXpath(path);
LOG.info("The length is : " + String.valueOf(elements.size()));

for (WebElement c: elements) {
LOG.info("->> " + String.valueOf(count));
count++;
headers.add(c.getText());
}
return headers;
}

结果是:

INFO com.xxx.test - The length is: 13
INFO com.xxx.test ->> 0
INFO com.xxx.test ->> 1
INFO com.xxx.test ->> 2
INFO com.xxx.test ->> 3
INFO com.xxx.test ->> 4
INFO com.xxx.test ->> 5

com.xxx.test -> getHeaders FAILED org.openqa.selenium.StableElementReferenceException:Element not found in the cache - perhaps the page has changed since it was looked up

在这种情况下有人可以提供帮助吗?谢谢!

最佳答案

我看到了 3 种方法来处理您的问题。

第一个也是最可靠的解决方案是在页面达到稳定状态后查找元素。这可以通过等待元素的存在或等待元素的计数来完成。

第二种解决方案是在引发 StableElementReferenceException 时再次列出元素:

List<String> headers = new ArrayList<String>();
List<WebElement> elements = findAllByXpath(path);
for(int i = 0; i < elements.size(); ) {
try {
headers.add(elements.get(i).getText());
i++;
} catch (StableElementReferenceException ex) {
elements = findAllByXpath(path);
}
}
return headers;

第三种解决方案是使用一段 Javascript 获取所有元素的文本:

List<WebElement> elements = findAllByXpath(path);

ArrayList headers = (ArrayList)((JavascriptExecutor)driver).executeScript(
"var arr = [], elements = arguments[0];" +
"for(var i=0; i<elements.length; i++)" +
" arr.push(elements[i].textContent);" +
"return arr;", elements);

return headers;

关于java - 稳定元素引用异常 : Element not found in the cache - perhaps the page has changed since it was looked up,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36215157/

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