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
xety
En interne, il utilise :
- Tapotement sur élément :
- la commande
clickpour les environnements Web (navigateurs Chrome/Safari, ou applications hybrides) - l'Android
mobile: clickGestureou iOSmobile: tappour les applications natives, incluant la commandescrollIntoViewpour le défilement automatique
- la commande
- Tapotement sur écran :
- la commande
actionpour les environnements Web (navigateurs Chrome/Safari, ou applications hybrides) - l'Android
mobile: clickGestureou iOSmobile: tappour les applications natives
- la commande
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.
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é.
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
| Nom | Type | Détails |
|---|---|---|
optionsoptionnel | TapOptions | Options de tapotement (optionnel) |
| Options de tapotement sur élément | ||
options.xoptionnel | number | Nombre (optionnel, obligatoire si y est défini) Uniquement pour le tapotement sur ÉCRAN, pas pour le tapotement sur ÉLÉMENT |
options.yoptionnel | number | Nombre (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.directionoptionnel | string | Peut ê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.maxScrollsoptionnel | number | Le 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.scrollableElementoptionnel | 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
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 })
})