在缓存中找不到java元素可能页面在查找后发生了更改为什么?
我是这个领域的新手,我想问一下,如果我试图实现这个场景,我该如何循环:(涉及SELENIUM和WEBDRIVER的JAVA代码)
我在一个列表视图上,例如帐户模块。然后,在account模块中,如果有分页(单击按钮以获取更多帐户),我将单击它,当listview中没有更多分页时,我将执行一段代码
如果listview中没有分页,那么我将自动执行一段代码
如果listview中不再出现“单击以获取更多帐户”,我想执行以下代码块
List<WebElement> button = driver.findElements(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[4]/button"));
for(WebElement click:button){
while(click.isDisplayed()){
WebDriverWait JEAN11 = new WebDriverWait(driver, 100);
JEAN11.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[4]/button")));
click.click();
Thread.sleep(4000);
}
WebElement present = driver.findElement(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[3]/div/table/tbody"));
List<WebElement> list = present.findElements(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[3]/div/table/tbody/tr"));
System.out.println("Total Number of TR: " + list.size());
}
为什么我收到Element not found in the cache - perhaps the page has changed since it was looked up
# 1 楼答案
我建议你
1-分别勾选“点击查看更多账户”和“TR总数”:
2-在这种情况下监视新对象。(不要只监视一次对象,然后像你那样在脚本的其余部分使用它)
所以代码应该是