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