Выбор ответа Middle Selenium и WebDriver спрашивают часто обновлено
StaleElementReferenceException
Вопрос
Тест сохранил элемент строки таблицы, затем сменил сортировку и кликнул по сохранённому элементу. Получил StaleElementReferenceException. Почему?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: После перерисовки DOM ссылка ведёт на удалённый узел. Ссылка на элемент привязана к конкретному узлу DOM.
Варианты ответа
- Элемент стал невидимым после сортировки и потерял фокус
- Истёк таймаут неявного ожидания, пока таблица перерисовывалась
- После перерисовки DOM ссылка ведёт на удалённый узелправильный ответ
- Selenium не поддерживает клики по ячейкам после сортировки
Разбор
Ссылка на элемент привязана к конкретному узлу DOM. Сортировка перерисовала таблицу, узел удалён, ссылка протухла. Лечится повторным поиском перед действием (Page Object отдаёт локаторы или ищет элемент при каждом обращении). Невидимость даёт ElementNotInteractable, таймаут даёт NoSuchElement или Timeout, а с таблицами Selenium работает как с любыми элементами.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.