tap
Wykonuje gest dotknięcia na:
- podanym elemencie. Automatycznie przewinie ekran jeśli element nie jest widoczny.
- lub na ekranie urządzenia mobilnego poprzez podanie współrzędnych
x
iy
Wewnętrznie używa:
- Dotknięcie elementu:
- komendy
click
dla środowisk Web (przeglądarki Chrome/Safari lub aplikacje hybrydowe) - Android
mobile: clickGesture
lub iOSmobile: tap
dla aplikacji natywnych, włączając komendęscrollIntoView
dla automatycznego przewijania
- komendy
- Dotknięcie ekranu:
- komendy
action
dla środowisk Web (przeglądarki Chrome/Safari lub aplikacje hybrydowe) - Android
mobile: clickGesture
lub iOSmobile: tap
dla aplikacji natywnych
- komendy
Ta różnica sprawia, że komenda tap
jest bardziej niezawodną alternatywą dla komendy click
dla aplikacji mobilnych.
Dla aplikacji natywnych ta komenda różni się od komendy click
, ponieważ automatycznie przewija do elementu za pomocą komendy scrollIntoView
,
która nie jest wspierana dla aplikacji natywnych z komendą click
. W aplikacjach hybrydowych lub środowiskach web, automatyczne przewijanie jest wspierane zarówno dla komend click
jak i tap
.
Ta komenda działa tylko z następującymi aktualnymi komponentami:
- Appium server (wersja 2.0.0 lub wyższa)
appium-uiautomator2-driver
(dla Androida)appium-xcuitest-driver
(dla iOS)
Upewnij się, że Twoje lokalne lub chmurowe środowisko Appium jest regularnie aktualizowane, aby uniknąć problemów z kompatybilnością.
Jeśli chcesz dotknąć określonego miejsca na ekranie i używasz zrzutu ekranu do określenia współrzędnych, pamiętaj, że współrzędne dla iOS są oparte na rozmiarze ekranu urządzenia, a nie na rozmiarze zrzutu ekranu. Rozmiar zrzutu ekranu jest większy ze względu na współczynnik pikseli urządzenia. Średni współczynnik pikseli urządzenia do iPhone'a 8 i obecnych iPadów wynosi 2, dla iPhone'ów od iPhone'a X współczynnik wynosi 3. Oznacza to, że rozmiar zrzutu ekranu jest 2 lub 3 razy większy niż rozmiar ekranu urządzenia, co oznacza, że jeśli znajdziesz współrzędne na zrzucie ekranu, podziel je przez współczynnik pikseli urządzenia, aby uzyskać prawidłowe współrzędne ekranu. Na przykład:
const screenshotCoordinates = { x: 600, y: 900 };
const dpr = 3; // Przykład dla iPhone 16
const screenCoordinates = {
x: screenshotCoordinates.x / dpr,
y: screenshotCoordinates.y / dpr
};
await browser.tap(screenCoordinates);
Parametry
Nazwa | Typ | Szczegóły |
---|---|---|
options opcjonalne | TapOptions | Opcje dotknięcia (opcjonalne) |
Opcje dotknięcia elementu | ||
options.x opcjonalne | number | Liczba (opcjonalna, obowiązkowa jeśli ustawiono y) Tylko dla dotknięcia EKRANU, nie dla dotknięcia ELEMENTU |
options.y opcjonalne | number | Liczba (opcjonalna, obowiązkowa jeśli ustawiono x) Tylko dla dotknięcia EKRANU, nie dla dotknięcia ELEMENTU |
Opcje dotknięcia ekranu | ||
options.direction opcjonalne | string | Może być jednym z down , up , left lub right , domyślnie down . Tylko dla dotknięcia ELEMENTU, nie dla dotknięcia EKRANU TYLKO-DLA-NATYWNYCH-APLIKACJI-MOBILNYCH |
options.maxScrolls opcjonalne | number | Maksymalna liczba przewinięć, po której zakończy wyszukiwanie elementu, domyślnie 10 . Tylko dla dotknięcia ELEMENTU, nie dla dotknięcia EKRANU TYLKO-DLA-NATYWNYCH-APLIKACJI-MOBILNYCH |
options.scrollableElement opcjonalne | Element | Element, który jest używany do przewijania. Jeśli nie podano elementu, użyje następującego selektora dla iOS -ios predicate string:type == "XCUIElementTypeApplication" i następującego dla Androida //android.widget.ScrollView' . Jeśli więcej elementów pasuje do domyślnego selektora, domyślnie wybierze pierwszy pasujący element. Tylko dla dotknięcia ELEMENTU, nie dla dotknięcia EKRANU TYLKO-DLA-NATYWNYCH-APLIKACJI-MOBILNYCH |
Przykłady
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 })
})