我是这个领域的新手,我想问一下如果我想要实现这个场景我怎么能循环:( JAVA代码涉及硒和WEBDRIVER)
我在列表视图中,例如帐户模块。然后在帐户模块中,如果有一个分页(点击更多帐户的按钮)那么我将点击它,当列表视图中没有看到更多的分页时,我将执行一个代码块。
如果列表视图中没有分页,那么我将自动执行代码块。
以下是我想要执行的代码块,如果"点击更多帐户"列表视图中不再出现
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
:(
答案 0 :(得分:1)
我建议你
1 - 单独检查“点击查看更多帐户”和“TR总数:”
2 - 在这种情况下间谍新对象。 (不要间谍对象一次,然后像你一样用它来完成你的其余部分)
所以代码应该是
while(clickMore == true) {
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"));
if(button.size() > 0) {
button.get(0).click();
Thread.sleep(4000);
}
else clickMore = false;
}
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());