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 |
|---|---|---|
optionsoptional | TapOptions | Параметри натискання (необов'язково) |
| Параметри натискання на елемент | ||
options.xoptional | number | Число (необов'язково, обов'язково, якщо встановлено y) Тільки для натискання на ЕКРАН, не для натискання на ЕЛЕМЕНТ |
options.yoptional | number | Число (необов'язково, обов'язково, якщо встановлено x) Тільки для натискання на ЕКРАН, не для натискання на ЕЛЕМЕНТ |
| Параметри натискання на екран | ||
options.directionoptional | string | Може бути одним з down, up, left або right, за замовчуванням down. Тільки для натискання на ЕЛЕМЕНТ, не для натискання на ЕКРАН ТІЛЬКИ-ДЛЯ-МОБІЛЬНИХ-НАТИВНИХ-ДОДАТКІВ |
options.maxScrollsoptional | number | Максимальна кількість прокруток, після якої пошук елемента припиниться, за замовчуванням 10. Тільки для натискання на ЕЛЕМЕНТ, не для натискання на ЕКРАН ТІЛЬКИ-ДЛЯ-МОБІЛЬНИХ-НАТИВНИХ-ДОДАТКІВ |
options.scrollableElementoptional | 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 })
})