tap
Führt eine Tipp-Geste aus auf:
- entweder dem angegebenen Element. Es wird automatisch scrollen, wenn es nicht gefunden werden kann.
- oder dem Bildschirm eines mobilen Geräts durch Angabe von
x
undy
Koordinaten
Intern verwendet es:
- Element-Tipp:
- den
click
-Befehl für Web-Umgebungen (Chrome/Safari-Browser oder Hybrid-Apps) - den Android
mobile: clickGesture
oder iOSmobile: tap
für native Apps, einschlie ßlich desscrollIntoView
Befehls für automatisches Scrollen
- den
- Bildschirm-Tipp:
- den
action
-Befehl für Web-Umgebungen (Chrome/Safari-Browser oder Hybrid-Apps) - den Android
mobile: clickGesture
oder iOSmobile: tap
für native Apps
- den
Dieser Unterschied macht den tap
-Befehl zu einer zuverlässigeren Alternative zum click
-Befehl für mobile Apps.
Für native Apps unterscheidet sich dieser Befehl vom click
-Befehl, da er automatisch zum Element wischt, indem der scrollIntoView
-Befehl verwendet wird,
der für native Apps mit dem click
-Befehl nicht unterstützt wird. In Hybrid-Apps oder Web-Umgebungen wird automatisches Scrollen sowohl für click
- als auch für tap
-Befehle unterstützt.
Dieser Befehl funktioniert nur mit den folgenden aktuellen Komponenten:
- Appium-Server (Version 2.0.0 oder höher)
appium-uiautomator2-driver
(für Android)appium-xcuitest-driver
(für iOS)
Stellen Sie sicher, dass Ihre lokale oder cloudbasierte Appium-Umgebung regelm äßig aktualisiert wird, um Kompatibilitätsprobleme zu vermeiden.
Wenn Sie auf eine bestimmte Koordinate auf dem Bildschirm tippen möchten und einen Screenshot verwenden, um die Koordinaten zu bestimmen, denken Sie daran, dass die Koordinaten für iOS auf der Bildschirmgröße des Geräts basieren und nicht auf der Screenshot-Größe. Die Screenshot-Größe ist aufgrund des Gerätepixelverhältnisses größer. Das durchschnittliche Gerätepixelverhältnis bis zum iPhone 8 und den aktuellen iPads beträgt 2, für iPhones ab dem iPhone X beträgt das Verhältnis 3. Das bedeutet, dass die Screenshot-Größe 2 oder 3 Mal größer ist als die Bildschirmgröße des Geräts, was bedeutet, dass wenn Sie die Koordinaten auf dem Screenshot finden, teilen Sie sie durch das Gerätepixelverhältnis, um die korrekten Bildschirmkoordinaten zu erhalten. Zum Beispiel:
const screenshotCoordinates = { x: 600, y: 900 };
const dpr = 3; // Beispiel für iPhone 16
const screenCoordinates = {
x: screenshotCoordinates.x / dpr,
y: screenshotCoordinates.y / dpr
};
await browser.tap(screenCoordinates);
Parameter
Name | Type | Details |
---|---|---|
options optional | TapOptions | Tipp-Optionen (optional) |
Element-Tipp-Optionen | ||
options.x optional | number | Zahl (optional, obligatorisch wenn y gesetzt ist) Nur für BILDSCHIRM-Tipp, nicht für ELEMENT-Tipp |
options.y optional | number | Zahl (optional, obligatorisch wenn x gesetzt ist) Nur für BILDSCHIRM-Tipp, nicht für ELEMENT-Tipp |
Bildschirm-Tipp-Optionen | ||
options.direction optional | string | Kann einer der Werte down , up , left oder right sein, Standard ist down . Nur für ELEMENT-Tipp, nicht für BILDSCHIRM-Tipp NUR-MOBILE-NATIVE-APP |
options.maxScrolls optional | number | Die maximale Anzahl von Scrolls, bis die Suche nach dem Element beendet wird, Standard ist 10 . Nur für ELEMENT-Tipp, nicht für BILDSCHIRM-Tipp NUR-MOBILE-NATIVE-APP |
options.scrollableElement optional | Element | Element, das zum Scrollen verwendet wird. Wenn kein Element angegeben wird, wird für iOS der folgende Selektor verwendet: -ios predicate string:type == "XCUIElementTypeApplication" und für Android der folgende: //android.widget.ScrollView' . Wenn mehrere Elemente dem Standardselektor entsprechen, wird standardmäßig das erste passende Element ausgewählt. Nur für ELEMENT-Tipp, nicht für BILDSCHIRM-Tipp NUR-MOBILE-NATIVE-APP |
Beispiele
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 })
})