На моей веб-странице есть список ссылок на разделы, каждый раздел содержит ссылки на детали.Я пытаюсь перейти к каждому разделу, а затем убедиться, что все ссылки не битые.
List<WebElement> sections = driver.findElements(By.xpath("//*[@id='sections']/li/a"));
System.out.println("sections: " + sections.size());
sections.forEach(selement -> {
selement.click();
List<WebElement> details = driver.findElements(By.xpath("//*[@id='details']/div/table/tbody/tr/td/table[1]/tbody/tr/td[2]/strong/a"));
System.out.println("details: " + details.size());
details.forEach(delement -> {
url = delement.getAttribute("href");
try {
huc = (HttpURLConnection) new URL(url).openConnection();
huc.setRequestMethod("HEAD");
huc.connect();
respCode = huc.getResponseCode();
if(respCode == 404) {
System.out.println(url + " link is broken");
} else if (respCode == 200) {
System.out.println(url + " link is ok");
} else {
System.out.println(url + " returned code " + respCode);
}
huc.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
});
driver.navigate().back();
});
Проблема в том, что я получаю StaleElementReferenceException
после проверки деталей первых разделов.Я предполагаю, что это потому, что после перебора деталей и возврата назад Selenium не рассматривает остальную часть списка секций как текущую?
Я мог бы, вероятно, создать список всех ссылок для секций, а затем перебрать этот списокперейти к ссылке на конкретный раздел, а затем проверить ссылки на детали.Но, может быть, есть другое / более простое решение?