Я исследовал эту ошибку на некоторое время и попробовал много вещей, и ничего, кажется, работают ...Селена: StaleElementReferenceException
while(!driver.findElements(By.className("next")).isEmpty()) {
//elements = driver.findElements(By.xpath("//a[@class='name']"));
elements = findDynamicElements("//a[@class='name']");
for (WebElement e : elements) {
userName = e.getText(); //<--EXCEPTION HERE
check_visitor_profile(userName);//<--WE LEAVE THE PAGE HERE
Thread.sleep(3000); //<--NO TRY/CATCH BLOCK FOR READABILITY
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
elements = findDynamicElements("//a[@class='name']");
}
driver.findElement(By.xpath("VisitsNext")).click();
}
protected List<WebElement> findDynamicElements(String path) {
List<WebElement> result;
String xPath = path;
new WebDriverWait(driver, 25).until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath(xPath)));
//new WebDriverWait(driver, 25).until(elementIdentified(By.id(path)));
try {
result = driver.findElements(By.xpath(xPath));
return result;
}
catch(WebDriverException e) {
return null;
}
);
}
Мой код крэпс на первую линию для цикла, где имя_пользователя . Я видел на этом форуме, что вы должны использовать 'presenceOfElementLocated' и явно ждать возвращения элемента, но это тоже не работает. Я использовал 'presenceOfAllElementsLocatedBy' для списка, но у меня есть метод, который использует 'presenceOfElementLocated', который тоже не работает.
Я знаю вещи, как Thread.sleep и implicitlyWait линии, вероятно, нет необходимости в данный момент, но я буквально попробовал все, и это не работает ... происходит
ошибка, потому что, когда я называю " check_visitor_profile 'он оставляет страницу - когда он возвращается, элементы неуместны, поэтому я должен их снова найти. Что я делаю, но это все еще исключает.
Любые идеи?
Спасибо.
Это был ответ, который я искал - Спасибо. – MatTaNg