PageObject

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

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

Переваги[ред. | ред. код]

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

Структура[ред. | ред. код]

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

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

Приклади[ред. | ред. код]

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

Приклад мовою C #[ред. | ред. код]

Приклад мовою TypeScript[ред. | ред. код]

Див. також[ред. | ред. код]

Посилання[ред. | ред. код]

  1. а б в Test Design Considerations — Selenium Documentation. Архів оригіналу за 10 березня 2016. Процитовано 11 березня 2016.
  2. Фаулер, Мартін. PageObject. martinfowler.com. Архів оригіналу за 12 березня 2016. Процитовано 11 березня 2016.
  3. Page Objects in Python. The Pragmatic Bookshelf. Архів оригіналу за 8 травня 2016. Процитовано 20 квітня 2016.
  4. Set up Page Object Model (POM) in Selenium Automation Framework. TOOLSQA. Архів оригіналу за 27 квітня 2016. Процитовано 20 квітня 2016.
  5. Protractor - end to end testing for AngularJS. Архів оригіналу за 13 березня 2016. Процитовано 12 березня 2016.
  6. 6. Page Objects — Selenium Python Bindings 2 documentation. Архів оригіналу за 25 квітня 2016. Процитовано 20 квітня 2016.
  7. UI Tests – Introducing a simple DSL. CheezyWorld. Архів оригіналу за 7 травня 2016. Процитовано 20 квітня 2016.