PageObject (з англійської «об'єкт сторінки») — шаблон проєктування, що використовується при написанні автоматизованих тестів, який дає змогу абстрагуватись від окремих елементів HTML і інкапсулювати їх у функції доступу до елементів інтерфейсу вищого рівня, як їх бачить користувач. PageObject є об'єктом ООП, і містить методи, на основі яких створюється DSL для керування застосунком на основі якої пишуть варіанти тестування. Хоча в назві міститься слово «сторінка», один PageObject не обов'язково відповідає одній сторінці, він відповідає певній частині інтерфейсу, можливою правильнішою назвою була б Panel Object, але поточна назва вже стала поширеною.

Цей шаблон уперше застосували в проєкті WebDriver, який пізніше об'єднався з Selenium.

Переваги Розділення логіки роботи та представлення Зменшення дублювання коду для пошуку елементів керування застосунком При змінах інтерфейсу, що не зачіпають логіки, потрібно буде змінити лише PageObject, а не логіку тестів.

Структура Page Object зазвичай містить лише код для доступу до елементів керування і не містить ніяких тестових припущень. Єдині перевірки, які здійснюються під час створення об'єкта — це те, що інтерфейс та елементи керування на ньому завантажились і відобразились коректно.

З елементами керування можна або взаємодіяти, або отримувати від них інформацію. Наприклад, галочка може відображатись у змінну типу boolean

Приклади Цей паттерн можна реалізувати на різних об'єктно орієнтованих мовах. Існують реалізації на Java, JavaScript, Python, Ruby

Приклад мовою C #

Приклад мовою TypeScript

Див. також Selenium MVC Фасад (шаблон проєктування)

Посилання