Найкращі практики
Цей посібник має на меті поділитися нашими найкращими практиками, які допоможуть вам писати ефективні та стійкі тести.
Використовуйте стійкі селектори
Використовуючи селектори, які стійкі до змін у DOM, ви матимете менше або взагалі не матимете тестів, що не проходять, коли, наприклад, клас видаляється з елемента.
Класи можуть застосовуватися до декількох елементів, і їх слід уникати, якщо це можливо, якщо ви навмисно не хочете отримати всі елементи з цим класом.
// 👎
await $('.button')
Усі ці селектори повинні повертати один елемент.
// 👍
await $('aria/Submit')
await $('[test-id="submit-button"]')
await $('#submit-button')
Примітка: Щоб дізнатися про всі можливі селектори, які підтримує WebdriverIO, перегляньте нашу сторінку Селектори.
Обмежте кількість запитів елементів
Кожного разу, коли ви використовуєте команду $ або $$ (це включає їх ланцюжки), WebdriverIO намагається знайти елемент у DOM. Ці запити є затратними, тому ви повинні намагатися обмежити їх якомога більше.
Запитує три елементи.
// 👎
await $('table').$('tr').$('td')
Запитує лише один елемент.
// 👍
await $('table tr td')
Єдиний випадок, коли ви повинні використовувати ланцюжки, — це коли ви хочете поєднати різні стратегії селекторів. У прикладі ми використовуємо Deep Selectors, що є стратегією для входження в тіньовий DOM елемента.
// 👍
await $('custom-datepicker').$('#calendar').$('aria/Select')