$
Команда $
- це короткий і зручний спосіб отримати один елемент на сторінці.
На відміну від $
, що приєднаний до об'єкта browser,
ця команда запитує елемент на основі кореневого елемента.
Ви також можете передати об'єкт як селектор, де об'єкт містить властивість element-6066-11e4-a52e-4f735466cecf
зі значенням посилання на елемент. Команда потім перетворить посилання на розширений елемент WebdriverIO.
Примітка: ланцюжки команд $
та $$
мають сенс лише тоді, коли ви використовуєте кілька стратегій вибору селекторів. В іншому випадку
ви зробите непотрібні запити, які сповільнять тест (наприклад, $('body').$('div')
викличе два запити, тоді як
$('body div')
робить буквально те саме лише з одним запитом)
Ви можете зв'язувати $
або $$
разом, не обгортаючи окремі команди в await
, щоб
спуститися по DOM-дереву, наприклад:
const imageSrc = await $$('div')[1].nextElement().$$('img')[2].getAttribute('src')
WebdriverIO безперешкодно проходить через тіньові коріння (shadow roots) при використанні команд $
або $$
, незалежно від рівня вкладеності або
режиму тіньового кореня, наприклад:
await browser.url('https://ionicframework.com/docs/usage/v8/datetime/basic/demo.html?ionic:mode=md')
await browser.$('button[aria-label="Sunday, August 4"]').click()
await browser.$('.aux-input').getValue()
Для отримання додаткової інформації про те, як вибирати конкретні елементи, перегляньте посібник Selectors.
Використання
$(selector).$(selector)
Параметри
Назва | Тип | Деталі |
---|---|---|
selector | String, Function, Matcher | селектор, JS функція або об'єкт Matcher для отримання певного елемента |
Приклади
loading...
loading...
loading...
loading...
it('should use Androids DataMatcher or ViewMatcher selector', async () => {
const menuItem = await $({
"name": "hasEntry",
"args": ["title", "ViewTitle"],
"class": "androidx.test.espresso.matcher.ViewMatchers"
});
await menuItem.click();
const menuItem = await $({
"name": "hasEntry",
"args": ["title", "ViewTitle"]
});
await menuItem.click();
});
Повертає
- <WebdriverIO.Element>