Селектори
WebDriver протокол надає кілька типів селекторів для пошуку елемента. WebdriverIO спрощує їх, щоб зробити пошук елементів простішим. Зауважте, що попри те, що команди для пошуку елементів називаються $
та $$
, вони не мають нічого спільного з jQuery або Sizzle Selector Engine.
Зауважте, що не всі із великої кількості типів селекторів можуть забезпечити, надійний пошук потрібного вам елемента. Наприклад, маючи таку кнопку:
<button
id="main"
class="btn btn-large"
name="submission"
role="button"
data-testid="submit"
>
Submit
</button>
Ми рекомендуємо і не рекомендуємо наступні селектори:
Селектор | Використовувати | Роз'яснення |
---|---|---|
$('button') | 🚨 Ніколи | Найгірше – надто загальне, без контексту. |
$('.btn.btn-large') | 🚨 Ніколи | Поганий. Зв'язаний зі стилями. Дуже схильний до змін. |
$('#main') | ⚠️ Обережно | Краще. Але все ще зв'язаний зі стилями або слухачами подій JS. |
$(() => document.queryElement('button')) | ⚠️ Обережно | Ефективний, проте занадто складний для написання. |
$('button[name="submission"]') | ⚠️ Обережно | Зв'язаний із атрибутом name , який має семантику HTML. |
$('button[data-testid="submit"]') | ✅ Можна | Вимагає додаткових атрибутів, не пов'язаних із доступністю. |
$('aria/Submit') or $('button=Submit') | ✅ Завжди | Найкращий. Демонструє те, як користувач взаємодіє зі сторінкою. |
CSS селектори
Якщо не вказано інше, WebdriverIO шукатиме елементи за допомогою CSS селекторів, наприклад:
loading...
Текст посилання
Щоб отримати елемент посилання із певним текстом у ньому, вкажіть текст, починаючи зі знака рівності (=
).
Наприклад:
loading...
Ви можете знайти цей елемент, викликавши:
loading...
Частковий текст посилання
Щоб знайти елемент посилання, текст якого частково містить текст що ви шукаєте, використайте *=
перед вашим текстом (наприклад *=driver
).
Ви можете знайти елемент із прикладу вище, викликавши:
loading...
Примітка: Ви не можете поєднувати кілька типів пошуку в одному селекторі. Використовуйте кілька послідовних пошуків елементів для досягнення цієї мети, наприклад:
const elem = await $('header h1*=Welcome') // doesn't work!!!
// use instead
const elem = await $('header').$('*=driver')