Page Object паттерн c использованием классов карты элементов и валидации

Page Object паттерн c использованием классов карты элементов и валидации

Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс

Всем привет. Несколько дней назад мы рассмотрели базовую конструкцию паттерна Page Object. Но обновленная версия, которая будет рассмотрена далее, мне нравится тем, что наследует некоторые принципы SOLID.

Нам понадобится добавить следующие классы:

  • Page Object Element Map (BingMainPageElementMap) – содержит свойства всех элементов на странице.
  • Page Object Validator (BingMainPageValidator)  cодержит методы валидации.
  • Page Object (BingMainPage) – реализует все действия, такие как поиск, навигацию. Также он предоставляет легкий доступ к двум предыдущим классам с помощью свойств. Вторым преимуществом модифицированного паттерна есть то, что элементы Element Map инкапсулируются в методах действий (обвертках), например, в методе Search().
  • UI Tests (BingTests) – содержит сам тест.

Код класса карты элементов, как можно заметить, уже не требует поддержки библиотеки Selenium.Support, так мы не используем метод InitElements и аннотации FindsBy.


Все методе вылидации помещаем в отдельный класс BingMainPageValidator:


Совмещаем вызовы двух классов в классе BingMainPage:


И сам тестовый класс, ничем не отличающийся от предыдущей реализации:


Конечная структура проекта:

pom

Спасибо за внимание и подписывайтесь на рассылку :)

Связанные статьи