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

Java DOM中不再存在移动元素-selenium,java,android,selenium,appium,Java,Android,Selenium,Appium,使用appium+selenium+java。正在尝试等待具有特定文本的移动元素 在移动应用程序中,我登录到页面,在登录过程中,有android.widget.TextView(0)和文本,所以我检查此文本,如果显示了具有不同文本的新元素android.widget.TextView(0),那么我可以执行其他步骤。当新元素出现时,旧元素不存在 使用下面的代码,但是我可以看到 Cached elements 'By.clazz: android.widget.TextView' do not ex

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

在移动应用程序中,我登录到页面,在登录过程中,有android.widget.TextView(0)和文本,所以我检查此文本,如果显示了具有不同文本的新元素android.widget.TextView(0),那么我可以执行其他步骤。当新元素出现时,旧元素不存在

使用下面的代码,但是我可以看到

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

公共静态MobileElement waitForElementText(AndroidDriver驱动程序、int索引、字符串文本、int超时){
列表mobileElement=null;
做{
mobileElement=新的WebDriverWait(驱动程序,超时)
.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.className(“android.widget.TextView”))
.stream().map(元素->(MobileElement)元素).collect(收集器.toList());
System.out.println(“等待:”+text+“找到:”+mobileElement.get(index.getText());
试一试{
睡眠(5000);
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}while(mobileElement.get(index.getText()!=text);
System.out.println(mobileElement.get(index.getText());
返回mobileElement.get(索引);
}

知道我做错了什么吗

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

将while条件更改为:

while (mobileElement.size()>0);

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

将while条件更改为:

while (mobileElement.size()>0);

你好,萨米尔·阿罗拉。当我使用while时(mobileElement.size()>0);循环不会结束。应用程序打开预期页面并查找我等待但循环未结束的新元素:(Hi Sameer Arora.当我使用while(mobileElement.size()>0)时;循环未结束。应用程序打开预期页面并查找我等待但循环未结束的新元素:(我希望此答案可以帮助您我希望此答案可以帮助您