gpt4 book ai didi

java - DOM 中不再存在移动元素 - selenium

转载 作者:行者123 更新时间:2023-11-30 05:00:15 24 4
gpt4 key购买 nike

使用 appium + selenium + java。尝试等待具有特定文本的移动元素。

在移动应用程序中,我登录到页面,并且在登录期间有 android.widget.TextView(0) 和文本,所以我检查这个文本,如果新元素 android.widget.TextView(0) 显示不同的文本然后我可以继续其他步骤。当新元素出现时,旧元素不存在

为此使用下面的代码,然后我可以看到

Cached elements 'By.clazz: android.widget.TextView' do not exist in DOM anymore 

代码:

public static MobileElement waitForElementText(AndroidDriver driver, int index, String text, int timeout) {

List<MobileElement> mobileElement = null;

do {

mobileElement = new WebDriverWait(driver, timeout)
.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.className("android.widget.TextView")))
.stream().map(element -> (MobileElement) element).collect(Collectors.toList());
System.out.println("waiting for: " + text + " found: " + mobileElement.get(index).getText());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} while (mobileElement.get(index).getText() != text);

System.out.println(mobileElement.get(index).getText());

return mobileElement.get(index);
}

任何想法我做错了什么?

最佳答案

DOM 中不再存在缓存元素“By.clazz: android.widget.TextView”
发生是因为当您尝试获取文本时,该元素不存在于页面上。因此,不应将 while 条件放在检查文本上,而应将条件放在元素列表的大小上。当页面上不存在元素时,大小将变为零。

将 while 条件更改为:

while (mobileElement.size()>0);

关于java - DOM 中不再存在移动元素 - selenium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58380189/

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