Уровни абстракции. Создание кастомных элементов.

Уровни абстракции

В автоматизации часто применяются следующие абстракции:

  • Page Object

  • Page Element

Паттерн Page Object хорошо зарекомендовал себя в автоматизации. Основная идея – инкапсулировать логику поведения страницы в классе страницы. Таким образом, тесты будут работать не с низкоуровневым кодом, а с высокоуровневой абстракцией.

Плюсы Page Object:

  • Разделение полномочий: вся логика страницы описывается в Page Object классах, а тестовые классы лишь используют их публичные методы и проверяют результат.

  • DRY – все локаторы помещаются в одном месте

  • Инкапсуляция работы с драйвером. Полезно при кросс-браузерном тестировании

  • Page Objects позволяет записать локаторы в декларативном стиле

В классическом варианте паттерн предполагает создание одного класса на одну страницу. Это может быть неудобно в ряде случаев:

  • Использование кастомных элементов при создании веб-приложений

  • Присутствие кастомных элементов на многих страницах

В решении этой проблемы может помочь использование наследования, но агрегация видится предпочтительнее. Поэтому лучше воспользоваться паттерном – Page Element. Page Elements – позволяет дробить страницу на более мелкие составляющие – блоки, виджеты и т.д. После чего эти блоки можно переиспользовать в нескольких страницах.

Кастомные элементы

WebDriver очень мощный инструмент, который позволяет выполнять различные действия над элементами страниц. Для этого используется класс WebElement. Но, как и всегда, не все так просто и замечательно. На практике автоматизаторы сталкиваются с тем, что разработчики используют кастомные элементы, с которыми класс WebElement не работает. К примеру, возьмем написание тестов для таблиц. Стандартные классы WebDriver не работают с таблицами, потому нам нужно написать свой, в котором мы опишем работу с элементами таблицы (ячейки, строки и т. д.).

Last updated