Aller au contenu principal

tap

Exécute un geste de tapotement sur :

  • soit l'élément donné. Il fera automatiquement défiler s'il ne peut pas être trouvé.
  • soit l'écran d'un appareil mobile en fournissant les coordonnées x et y

En interne, il utilise :

  • Tapotement sur élément :
    • la commande click pour les environnements Web (navigateurs Chrome/Safari, ou applications hybrides)
    • l'Android mobile: clickGesture ou iOS mobile: tap pour les applications natives, incluant la commande scrollIntoView pour le défilement automatique
  • Tapotement sur écran :
    • la commande action pour les environnements Web (navigateurs Chrome/Safari, ou applications hybrides)
    • l'Android mobile: clickGesture ou iOS mobile: tap pour les applications natives

Cette différence fait de la commande tap une alternative plus fiable à la commande click pour les applications mobiles.

Pour les applications natives, cette commande diffère de la commande click car elle balayera automatiquement vers l'élément en utilisant la commande scrollIntoView, qui n'est pas prise en charge pour les applications natives avec la commande click. Dans les applications hybrides ou les environnements web, le défilement automatique est pris en charge pour les commandes click et tap.

info

Cette commande ne fonctionne qu'avec les composants mis à jour suivants :

  • Serveur Appium (version 2.0.0 ou supérieure)
  • appium-uiautomator2-driver (pour Android)
  • appium-xcuitest-driver (pour iOS)

Assurez-vous que votre environnement Appium local ou basé sur le cloud est régulièrement mis à jour pour éviter les problèmes de compatibilité.

Pour les tapotements sur écran

Si vous souhaitez tapoter sur une coordonnée spécifique de l'écran et que vous utilisez une capture d'écran pour déterminer les coordonnées, n'oubliez pas que les coordonnées pour iOS sont basées sur la taille de l'écran de l'appareil, et non sur la taille de la capture d'écran. La taille de la capture d'écran est plus grande en raison du rapport de pixels de l'appareil. Le rapport de pixels moyen jusqu'à l'iPhone 8 et les iPads actuels est de 2, pour les iPhones à partir de l'iPhone X, le rapport est de 3. Cela signifie que la taille de la capture d'écran est 2 ou 3 fois plus grande que la taille de l'écran de l'appareil, ce qui signifie que si vous trouvez les coordonnées sur la capture d'écran, divisez-les par le rapport de pixels de l'appareil pour obtenir les coordonnées d'écran correctes. Par exemple :

const screenshotCoordinates = { x: 600, y: 900 };
const dpr = 3; // Exemple pour iPhone 16
const screenCoordinates = {
x: screenshotCoordinates.x / dpr,
y: screenshotCoordinates.y / dpr
};
await browser.tap(screenCoordinates);
Paramètres
NomTypeDétails
options
optionnel
TapOptionsOptions de tapotement (optionnel)
Options de tapotement sur élément
options.x
optionnel
numberNombre (optionnel, obligatoire si y est défini)
Uniquement pour le tapotement sur ÉCRAN, pas pour le tapotement sur ÉLÉMENT
options.y
optionnel
numberNombre (optionnel, obligatoire si x est défini)
Uniquement pour le tapotement sur ÉCRAN, pas pour le tapotement sur ÉLÉMENT
Options de tapotement sur écran
options.direction
optionnel
stringPeut être l'un des suivants : down, up, left ou right, la valeur par défaut est down.
Uniquement pour le tapotement sur ÉLÉMENT, pas pour le tapotement sur ÉCRAN
MOBILE-NATIVE-APP-ONLY
options.maxScrolls
optionnel
numberLe nombre maximum de défilements jusqu'à ce qu'il arrête de rechercher l'élément, la valeur par défaut est 10.
Uniquement pour le tapotement sur ÉLÉMENT, pas pour le tapotement sur ÉCRAN
MOBILE-NATIVE-APP-ONLY
options.scrollableElement
optionnel
ElementÉlément utilisé pour défiler. Si aucun élément n'est fourni, il utilisera le sélecteur suivant pour iOS -ios predicate string:type == "XCUIElementTypeApplication" et le suivant pour Android //android.widget.ScrollView'. Si plusieurs éléments correspondent au sélecteur par défaut, alors par défaut il choisira le premier élément correspondant.
Uniquement pour le tapotement sur ÉLÉMENT, pas pour le tapotement sur ÉCRAN
MOBILE-NATIVE-APP-ONLY
Exemples
element.tap.example.js
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()
})

element.tap.scroll.options.example.js
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')
})
})

screen.tap.example.js
it('should be able to tap on screen coordinates', async () => {
await browser.tap({ x: 200, y: 400 })
})

Welcome! How can I help?

WebdriverIO AI Copilot