Перейти до основного вмісту

tap

Виконує жест натискання на:

  • або вказаний елемент. Він автоматично прокрутить екран, якщо елемент не знайдено.
  • або на екрані мобільного пристрою, надаючи координати x та y

Внутрішньо використовує:

  • Натискання на елемент:
    • команду click для веб-середовищ (браузери Chrome/Safari або гібридні додатки)
    • Android mobile: clickGesture або iOS mobile: tap для нативних додатків, включаючи команду scrollIntoView для автоматичної прокрутки
  • Натискання на екран:
    • команду action для веб-середовищ (браузери Chrome/Safari або гібридні додатки)
    • Android mobile: clickGesture або iOS mobile: tap для нативних додатків

Ця відмінність робить команду tap більш надійною альтернативою команді click для мобільних додатків.

Для нативних додатків ця команда відрізняється від команди click тим, що вона автоматично прокручує до елемента, використовуючи команду scrollIntoView, яка не підтримується для нативних додатків з командою click. У гібридних додатках або веб-середовищах автоматична прокрутка підтримується як для команд click, так і для tap.

інфо

Ця команда працює лише з наступними актуальними компонентами:

  • Appium сервер (версія 2.0.0 або вище)
  • appium-uiautomator2-driver (для Android)
  • appium-xcuitest-driver (для iOS)

Переконайтеся, що ваше локальне або хмарне середовище Appium регулярно оновлюється, щоб уникнути проблем із сумісністю.

Для натискань на екран

Якщо ви хочете натиснути на певні координати на екрані і використовуєте скріншот для визначення координат, пам'ятайте, що координати для iOS базуються на розмірі екрану пристрою, а не на розмірі скріншоту. Розмір скріншоту більший через співвідношення пікселів пристрою. Середнє співвідношення пікселів пристрою до iPhone 8 та поточних iPad становить 2, для iPhone, починаючи з iPhone X, це співвідношення становить 3. Це означає, що розмір скріншоту в 2 або 3 рази більший, ніж розмір екрану пристрою, що означає, що якщо ви знаходите координати на скріншоті, поділіть їх на співвідношення пікселів пристрою, щоб отримати правильні екранні координати. Наприклад:

const screenshotCoordinates = { x: 600, y: 900 };
const dpr = 3; // Приклад для iPhone 16
const screenCoordinates = {
x: screenshotCoordinates.x / dpr,
y: screenshotCoordinates.y / dpr
};
await browser.tap(screenCoordinates);
Parameters
NameTypeDetails
options
optional
TapOptionsПараметри натискання (необов'язково)
Параметри натискання на елемент
options.x
optional
numberЧисло (необов'язково, обов'язково, якщо встановлено y)
Тільки для натискання на ЕКРАН, не для натискання на ЕЛЕМЕНТ
options.y
optional
numberЧисло (необов'язково, обов'язково, якщо встановлено x)
Тільки для натискання на ЕКРАН, не для натискання на ЕЛЕМЕНТ
Параметри натискання на екран
options.direction
optional
stringМоже бути одним з down, up, left або right, за замовчуванням down.
Тільки для натискання на ЕЛЕМЕНТ, не для натискання на ЕКРАН
ТІЛЬКИ-ДЛЯ-МОБІЛЬНИХ-НАТИВНИХ-ДОДАТКІВ
options.maxScrolls
optional
numberМаксимальна кількість прокруток, після якої пошук елемента припиниться, за замовчуванням 10.
Тільки для натискання на ЕЛЕМЕНТ, не для натискання на ЕКРАН
ТІЛЬКИ-ДЛЯ-МОБІЛЬНИХ-НАТИВНИХ-ДОДАТКІВ
options.scrollableElement
optional
ElementЕлемент, який використовується для прокрутки. Якщо елемент не надано, буде використано наступний селектор для iOS -ios predicate string:type == "XCUIElementTypeApplication" та наступний для Android //android.widget.ScrollView'. Якщо декілька елементів відповідають селектору за замовчуванням, то за замовчуванням буде обрано перший відповідний елемент.
Тільки для натискання на ЕЛЕМЕНТ, не для натискання на ЕКРАН
ТІЛЬКИ-ДЛЯ-МОБІЛЬНИХ-НАТИВНИХ-ДОДАТКІВ
Examples
element.tap.example.js
it('should be able to tap an on element', async () => {
const elem = $('~myElement')
// It will automatically scroll to the element if it's not already in the viewport
await elem.tap()
})

element.tap.scroll.options.example.js
it('should be able to swipe right 3 times in a custom scroll areas to an element and tap on the element', async () => {
const elem = $('~myElement')
// Swipe right 3 times in the custom scrollable element to find the element
await elem.tap({
direction: 'right',
maxScrolls: 3,
scrollableElement: $('#scrollable')
})
})

screen.tap.example.js
it('should be able to tap on screen coordinates', async () => {
await browser.tap({ x: 200, y: 400 })
})

Welcome! How can I help?

WebdriverIO AI Copilot