Шаблон об'єкта сторінки
Версія 5 WebdriverIO розроблена з урахуванням підтримки шаблону об'єкта сторінки. Впровадивши принцип "елементів як першокласних громадян", тепер можливо створювати великі тестові набори за допомогою цього шаблону.
Для створення об'єктів сторінки не потрібні додаткові пакети. Виявляється, що чисті, сучасні класи надають усі необхідні функції:
- успадкування між об'єктами сторінки
- ліниве завантаження елементів
- інкапсуляція методів та дій
Мета використання об'єктів сторінки - абстрагувати будь-яку інформацію про сторінку від самих тестів. В ідеалі, ви повинні зберігати всі селектори або особливі інструкції, які є унікальними для певної сторінки, в об'єкті сторінки, щоб ви все ще могли запускати свій тест після повного редизайну вашої сторінки.
Створення об'єкта сторінки
Спочатку нам потрібен головний об'єкт сторінки, який ми назвемо Page.js. Він міститиме загальні селектори або методи, які успадковуватимуть усі об'єкти сторінки.
// Page.js
export default class Page {
constructor() {
this.title = 'My Page'
}
async open (path) {
await browser.url(path)
}
}
Ми завжди export екземпляр об'єкта сторінки та ніколи не створюємо цей екземпляр у тесті. Оскільки ми пишемо наскрізні тести, ми завжди розглядаємо сторінку як конструкцію без стану - так само, як кожен HTTP-запит є конструкцією без стану.
Звичайно, браузер може зберігати інформацію про сесії і тому може відображати різні сторінки на основі різних сесій, але це не повинно відображатися в об'єкті сторінки. Такі зміни стану повинні бути у ваших фактичних тестах.
Давайте почнемо тестувати першу сторінку. Для демонстраційних цілей ми використовуємо веб-сайт The Internet від Elemental Selenium як піддослідного. Спробуємо створити приклад об'єкта сторінки для сторінки входу.