Page Object Model (POM)
Что такое объектная модель страницы?
Объектная модель страницы — это шаблон проектирования, в котором основное внимание уделяется сокращению дублирования кода и минимизации усилий, связанных с обновлением/обслуживанием кода. В объектной модели страницы классы страниц создаются для всех веб-страниц, которые являются частью тестируемой автоматизации (AUT).
Это делает код более модульным, поскольку локаторы/элементы , используемые комплектами тестов/сценариями тестов, хранятся в отдельном файле класса, а тестовые примеры (содержащие основную логику тестирования) находятся в другом файле. Следовательно, любые изменения в элементах веб-интерфейса потребуют минимальных изменений (или их отсутствия) в тестовых сценариях, поскольку локаторы и тестовые сценарии хранятся отдельно.
Зачем использовать объектную модель страницы (POM)?
По мере развития программного проекта сложность кода разработки и кода тестирования увеличивается. Следовательно, при разработке кода автоматизированного тестирования необходимо соблюдать правильную структуру проекта; иначе код может стать неуправляемым.
Веб-продукт (или проект) состоит из различных веб-страниц, которые используют различные веб-элементы (например, элементы меню, текстовые поля, флажки, переключатели и т. д.). Тестовые случаи будут взаимодействовать с этими элементами, и сложность кода многократно возрастет, если локаторы Selenium не будут управляться должным образом.
Преимущества объектной модели страницы(POM)
Теперь, когда вы знакомы с основами объектной модели страницы, давайте рассмотрим некоторые из основных преимуществ использования этого шаблона проектирования:
Повышенная возможность повторного использования. Методы объекта страницы в разных классах POM можно повторно использовать в разных тестовых примерах/наборах тестов. Следовательно, общий размер кода уменьшится с хорошим запасом из-за увеличения коэффициента повторного использования методов страницы.
Улучшенная ремонтопригодность . Поскольку тестовые сценарии и локаторы хранятся отдельно, это делает код чище, и меньше усилий тратится на поддержку тестового кода.
Минимальное влияние из-за изменений пользовательского интерфейса . Даже если в пользовательском интерфейсе происходят частые изменения, изменения могут потребоваться только в репозитории объектов (где хранятся локаторы). Влияние на реализацию тестовых сценариев минимально или отсутствует.
Интеграция с несколькими средами тестирования . Поскольку реализация теста отделена от репозитория объектов страниц (или классов страниц), мы можем использовать один и тот же репозиторий с разными средами тестирования. Например, Test Case — 1 может использовать фреймворк Robot, Tese Case — 2 может использовать фреймворк pytest и т. д. Один набор тестов может содержать тестовые случаи, реализованные с использованием разных фреймворков тестирования .
Пример POM:
Last updated