Мне нужно разобрать страницу одну за другой, пока нажата следующая кнопка. Я подключаюсь к первой странице по умолчанию и анализирую до последнего элемента с этой страницы:
driver.get("https://www.scimagojr.com/journalrank.php?country=UA&page=1");
Я получаю все элементы с первой страницы:
WebElement tableId = driver.findElement(By.tagName("table"));
List<WebElement> trElements = tableId.findElements(By.xpath("./tbody/tr"));
И, наконец, пытаясь проверить, доступна ли нажатие кнопки «Далее», проанализируйте текущую страницу и другие оставшиеся страницы, если они существуют:
WebElement nextButton = driver.findElement(By.xpath("//img[contains(@title,'next')]"));
if(isClickable(nextButton, driver)) {
for (int id = 1; id <= trElements.size(); id++) {
for (WebElement element : trElements) {
//...
id++;
}
}
} else {
nextButton.click();
}
Когда я прошел по l oop текущей первой страницы - все в порядке, но мне нужно проверить следующую кнопку, чтобы снова проанализировать другую страницу, если это необходимо.
isClickable()
метод выглядит так:
public static boolean isClickable(WebElement el, WebDriver driver) {
try {
WebDriverWait wait = new WebDriverWait(driver, 1);
wait.until(ExpectedConditions.elementToBeClickable(el));
return true;
} catch (Exception e) {
return false;
}
}