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]



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

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

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