Перейти к основному содержимому

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