Уровни абстракции. Создание кастомных элементов.
Уровни абстракции
В автоматизации часто применяются следующие абстракции:
Page Object
Page Element
Паттерн Page Object хорошо зарекомендовал себя в автоматизации. Основная идея – инкапсулировать логику поведения страницы в классе страницы. Таким образом, тесты будут работать не с низкоуровневым кодом, а с высокоуровневой абстракцией.
Плюсы Page Object:
Разделение полномочий: вся логика страницы описывается в Page Object классах, а тестовые классы лишь используют их публичные методы и проверяют результат.
DRY – все локаторы помещаются в одном месте
Инкапсуляция работы с драйвером. Полезно при кросс-браузерном тестировании
Page Objects позволяет записать локаторы в декларативном стиле
В классическом варианте паттерн предполагает создание одного класса на одну страницу. Это может быть неудобно в ряде случаев:
Использование кастомных элементов при создании веб-приложений
Присутствие кастомных элементов на многих страницах
В решении этой проблемы может помочь использование наследования, но агрегация видится предпочтительнее. Поэтому лучше воспользоваться паттерном – Page Element. Page Elements – позволяет дробить страницу на более мелкие составляющие – блоки, виджеты и т.д. После чего эти блоки можно переиспользовать в нескольких страницах.
Кастомные элементы
WebDriver очень мощный инструмент, который позволяет выполнять различные действия над элементами страниц. Для этого используется класс WebElement. Но, как и всегда, не все так просто и замечательно. На практике автоматизаторы сталкиваются с тем, что разработчики используют кастомные элементы, с которыми класс WebElement не работает. К примеру, возьмем написание тестов для таблиц. Стандартные классы WebDriver не работают с таблицами, потому нам нужно написать свой, в котором мы опишем работу с элементами таблицы (ячейки, строки и т. д.).
Last updated