Задать вопрос
leshqow
@leshqow
-l-

Selenium webDriver: StaleElementReferenceException. Как избавиться?

Получаю список нужных веб элементов
List<WebElement> temp = driver.findElements(By.cssSelector("span.selection-link"));

Далее я хочу достать из списка значения аттрибутов, пока я это делаю вываливается StaleElementReferenceException. Я так понимаю теряется связь с веб-элементами и выбрасывается это исключение. ВОПРОСЫ:

1) Спарсенные веб-элементы я сохранил в листе, причем тут вообще webDriver? Я спарсил и положил в List, далее работаю с ним, какая связь у List в котором я сохранил то, что спарсил и у webDriver?
2) Как можно сохранить спарсенные веб элементы и работать с ними после driver.quit?
В контексте моей задачи этот List в веб-элементами необходимо будет обработать несколько раз (например получить значения аттрибутов и содержимого тега)
  • Вопрос задан
  • 502 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
сохранить спарсенные веб элементы и работать с ними после driver.quit нельзя
обрабатывайте пока тепленькие

когда обращаетесь по какому нибудь методу в нем имеется проверка что он все еше отрендерен
браузером
This essentially determines whether or not the element is still attached to the DOM.

нет ? извиняйте -

@throws StaleElementReferenceException If the element no
* longer exists as initially defined
Ответ написан
@sviato_slav
Можно сделать следующее:
сохранить всю страницу в строку:
String html = driver.findElement(By.tagName("html")).getAttribute("innerHTML")

А затем уже работать со строкой другими средствами: Jsoup и т.д.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы