如果显示下一页xpath,则单击它并计算下一页的元素,只要下一页存在,就继续这样做



我为enabledNextPage做了一个唯一的xpath。只要禁用下一页箭头,它就不会在UI上找到。但是在while循环中,它会给我错误,元素没有找到,这是正确的,我没有找到,它不应该继续while循环。我用了"try catch";如果下一页元素不存在,它仍然会运行while循环,并在下一行给出错误,即单击它。

List<WebElement> rows = new ArrayList();
rows.addAll(driver.findElements(By.xpath("//*[@class='sortable-row']")));
while (schedulingModel.nextPageEnabled.isDisplayed())
{
nextPageEnabledXpath.click();
Thread.sleep(3000);
rows.addAll(driver.findElements(By.xpath("//*[@class='sortable-row']")));

}

我宁愿有一个不同的逻辑实现通过findElements,这将返回给我一个下一页箭头或链接的列表,如果大小是>0,那么它必须有下一页链接,如果不是,那么没有下一页链接。

List<WebElement> nextPageList = driver.findElements(By.xpath("xpath of next page arrow"));
if (nextPageList.size() > 0) {
System.out.println("Next page link is present");
// code to click on it, or count or whatever.
}
else {
System.out.println("Next page link is not present");
}

您可以尝试使用isdisplay代替findElements,因为它不会抛出任何异常,如果元素不存在。如果你能分享更多关于你的查询的细节,比如URL,那么共享逻辑就很容易了。

List<WebElement> rows = new ArrayList();
rows.addAll(driver.findElements(By.xpath("//*[@class='sortable-row']")));
while (driver.findElements(By.xpath("nextPageEnabled xpath value").size()>0)
{
nextPageEnabledXpath.click();
Thread.sleep(3000);
rows.addAll(driver.findElements(By.xpath("//*[@class='sortable-row']")));

}