tap
Esegue un gesto di tap su:
- l'elemento specificato. Scorrerà automaticamente se non può essere trovato.
- o sullo schermo di un dispositivo mobile fornendo le coordinate
x
ey
Internamente utilizza:
- Tap su elemento:
- il comando
click
per ambienti Web (browser Chrome/Safari, o app ibride) - l'Android
mobile: clickGesture
o iOSmobile: tap
per app native, incluso il comandoscrollIntoView
per lo scorrimento automatico
- il comando
- Tap sullo schermo:
- il comando
action
per ambienti Web (browser Chrome/Safari, o app ibride) - l'Android
mobile: clickGesture
o iOSmobile: tap
per app native
- il comando
Questa differenza rende il comando tap
un'alternativa più affidabile al comando click
per le app mobili.
Per le app native, questo comando differisce dal comando click
in quanto scorrerà automaticamente fino all'elemento utilizzando il comando scrollIntoView
,
che non è supportato per le app native con il comando click
. Nelle app ibride o negli ambienti web, lo scorrimento automatico è supportato sia per i comandi click
che tap
.
Questo comando funziona solo con i seguenti componenti aggiornati:
- Server Appium (versione 2.0.0 o superiore)
appium-uiautomator2-driver
(per Android)appium-xcuitest-driver
(per iOS)
Assicurati che il tuo ambiente Appium locale o basato su cloud sia regolarmente aggiornato per evitare problemi di compatibilità.
Se vuoi fare tap su una coordinata specifica dello schermo e usi uno screenshot per determinare le coordinate, ricorda che le coordinate per iOS sono basate sulla dimensione dello schermo del dispositivo, e non sulla dimensione dello screenshot. La dimensione dello screenshot è maggiore a causa del rapporto di pixel del dispositivo. Il rapporto medio di pixel del dispositivo fino all'iPhone 8 e gli iPad attuali è 2, per gli iPhone dall'iPhone X il rapporto è 3. Questo significa che la dimensione dello screenshot è 2 o 3 volte più grande della dimensione dello schermo del dispositivo, il che significa che se trovi le coordinate sullo screenshot, dividile per il rapporto di pixel del dispositivo per ottenere le coordinate corrette dello schermo. Per esempio:
const screenshotCoordinates = { x: 600, y: 900 };
const dpr = 3; // Esempio per iPhone 16
const screenCoordinates = {
x: screenshotCoordinates.x / dpr,
y: screenshotCoordinates.y / dpr
};
await browser.tap(screenCoordinates);
Parameters
Name | Type | Details |
---|---|---|
options optional | TapOptions | Opzioni di tap (opzionale) |
Opzioni tap su elemento | ||
options.x optional | number | Numero (opzionale, obbligatorio se y è impostato) Solo per tap su SCHERMO, non per tap su ELEMENTO |
options.y optional | number | Numero (opzionale, obbligatorio se x è impostato) Solo per tap su SCHERMO, non per tap su ELEMENTO |
Opzioni tap su schermo | ||
options.direction optional | string | Può essere uno tra down , up , left o right , il default è down . Solo per tap su ELEMENTO, non per tap su SCHERMO SOLO-APP-NATIVE-MOBILE |
options.maxScrolls optional | number | Il numero massimo di scorrimenti fino a quando smetterà di cercare l'elemento, il default è 10 . Solo per tap su ELEMENTO, non per tap su SCHERMO SOLO-APP-NATIVE-MOBILE |
options.scrollableElement optional | Element | Elemento che viene utilizzato per scorrere all'interno. Se non viene fornito alcun elemento, utilizzerà il seguente selettore per iOS -ios predicate string:type == "XCUIElementTypeApplication" e il seguente per Android //android.widget.ScrollView' . Se più elementi corrispondono al selettore predefinito, per impostazione predefinita sceglierà il primo elemento corrispondente. Solo per tap su ELEMENTO, non per tap su SCHERMO SOLO-APP-NATIVE-MOBILE |
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 })
})