Выбор ответа Middle Page Object и архитектура обновлено

Элементы или локаторы

Вопрос

Почему в Selenium Page Object лучше хранить локаторы ((By.ID, "save")), а не найденные в конструкторе WebElement?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Элементы протухают после перерисовки DOM, а локатор ищет заново. Элемент, найденный при создании страницы, после любой перерисовки даст StaleElementReferenceException, а если его ещё нет на странице, конструктор упадёт.

Варианты ответа

  1. WebElement нельзя сохранить в поле класса, Selenium это блокирует
  2. Элементы протухают после перерисовки DOM, а локатор ищет зановоправильный ответ
  3. Локаторы занимают меньше памяти, чем объекты WebElement в процессе
  4. Так требует стандарт W3C WebDriver для Page Object в Selenium

Разбор

Элемент, найденный при создании страницы, после любой перерисовки даст StaleElementReferenceException, а если его ещё нет на странице, конструктор упадёт. Локатор ищет элемент в момент действия. Сохранять WebElement можно, просто это источник ошибок. Память и стандарт тут ни при чём.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме