tap
Realiza un gesto de toque en:
- o el elemento dado. Se desplazará automáticamente si no puede encontrarse.
- o la pantalla en un dispositivo móvil proporcionando coordenadas
x
ey
Internamente utiliza:
- Toque de elemento:
- el comando
click
para entornos Web (navegadores Chrome/Safari, o aplicaciones híbridas) - el Android
mobile: clickGesture
o iOSmobile: tap
para aplicaciones nativas, incluyendo el comandoscrollIntoView
para desplazamiento automático
- el comando
- Toque de pantalla:
- el comando
action
para entornos Web (navegadores Chrome/Safari, o aplicaciones híbridas) - el Android
mobile: clickGesture
o iOSmobile: tap
para aplicaciones nativas
- el comando
Esta diferencia hace que el comando tap
sea una alternativa más confiable al comando click
para aplicaciones móviles.
Para aplicaciones nativas, este comando difiere del comando click
ya que deslizará automáticamente hacia el elemento utilizando el comando scrollIntoView
,
que no es compatible con aplicaciones nativas con el comando click
. En aplicaciones híbridas o entornos web, el desplazamiento automático es compatible tanto con los comandos click
como tap
.
Este comando solo funciona con los siguientes componentes actualizados:
- Servidor Appium (versión 2.0.0 o superior)
appium-uiautomator2-driver
(para Android)appium-xcuitest-driver
(para iOS)
Asegúrate de que tu entorno Appium local o en la nube se actualice regularmente para evitar problemas de compatibilidad.
Si deseas tocar en una coordenada específica de la pantalla y utilizas una captura de pantalla para determinar las coordenadas, recuerda que las coordenadas para iOS se basan en el tamaño de la pantalla del dispositivo, y no en el tamaño de la captura de pantalla. El tamaño de la captura de pantalla es mayor debido a la relación de píxeles del dispositivo. La relación de píxeles promedio hasta el iPhone 8 y los iPads actuales es 2, para iPhones desde el iPhone X la relación es 3. Esto significa que el tamaño de la captura de pantalla es 2 o 3 veces mayor que el tamaño de la pantalla del dispositivo, lo que significa que si encuentras las coordenadas en la captura de pantalla, divídelas por la relación de píxeles del dispositivo para obtener las coordenadas correctas de la pantalla. Por ejemplo:
const screenshotCoordinates = { x: 600, y: 900 };
const dpr = 3; // Ejemplo para iPhone 16
const screenCoordinates = {
x: screenshotCoordinates.x / dpr,
y: screenshotCoordinates.y / dpr
};
await browser.tap(screenCoordinates);
Parameters
Name | Type | Details |
---|---|---|
options optional | TapOptions | Opciones de toque (opcional) |
Opciones de toque de elemento | ||
options.x optional | number | Número (opcional, obligatorio si y está establecido) Solo para toque en PANTALLA, no para toque en ELEMENTO |
options.y optional | number | Número (opcional, obligatorio si x está establecido) Solo para toque en PANTALLA, no para toque en ELEMENTO |
Opciones de toque en pantalla | ||
options.direction optional | string | Puede ser uno de down , up , left o right , el predeterminado es down . Solo para toque en ELEMENTO, no para toque en PANTALLA SOLO-PARA-APLICACIONES-NATIVAS-MÓVILES |
options.maxScrolls optional | number | La cantidad máxima de desplazamientos hasta que dejará de buscar el elemento, el valor predeterminado es 10 . Solo para toque en ELEMENTO, no para toque en PANTALLA SOLO-PARA-APLICACIONES-NATIVAS-MÓVILES |
options.scrollableElement optional | Element | Elemento que se utiliza para desplazarse dentro. Si no se proporciona ningún elemento, utilizará el siguiente selector para iOS -ios predicate string:type == "XCUIElementTypeApplication" y el siguiente para Android //android.widget.ScrollView' . Si más elementos coinciden con el selector predeterminado, entonces por defecto seleccionará el primer elemento coincidente. Solo para toque en ELEMENTO, no para toque en PANTALLA SOLO-PARA-APLICACIONES-NATIVAS-MÓVILES |
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 })
})