tap
Виконує жест натискання на:
- або вказаний елемент. Він автоматично прокрутить екран, якщо елемент не знайдено.
- або на екрані мобільного пристрою, надаючи координати
x
таy
Внутрішньо використовує:
- Натискання на елемент:
- команду
click
для веб-середовищ (браузери Chrome/Safari або гібридні додатки) - Android
mobile: clickGesture
або iOSmobile: tap
для нативних додатків, включаючи командуscrollIntoView
для автоматичної прокрутки
- команду
- Натискання на екран:
- команду
action
для веб-середовищ (браузери Chrome/Safari або гібридні додатки) - Android
mobile: clickGesture
або iOSmobile: 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
Name | Type | Details |
---|---|---|
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
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()
})
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')
})
})
it('should be able to tap on screen coordinates', async () => {
await browser.tap({ x: 200, y: 400 })
})