J'essaie d'automatiser un Android et pour cela j'utilise les coordonnées X, Y pour faire un clic de bouton, car l'identification des éléments via ID, Xpath etc. n'est pas possible pour jeux. J'utilise la méthode TouchAction tap (int x, int y) (Appium Method) pour y parvenir. Mais malheureusement, cette méthode tap (int x, int y) semble obsolète. Les autres options qui la remplacent semblent être - -> touchAction.tap (PointOptions tapOptions) et touchAction.tap (TapOptions tapOptions). Il en va de même pour touchAction.press.
Mon code pour toucher un bouton spécifique ressemble à ceci:
TouchAction touchAction = new TouchAction(driver);
touchAction.tap(1280, 1013).perform();
Ici, les valeurs X, Y sont trouvées en utilisant des points de contact dans Android Device [Developer Options> Show pointer location]
Quelqu'un peut-il suggérer une meilleure façon d'y parvenir en utilisant une méthode non obsolète? Merci!
Vous pouvez consulter la documentation TouchAction ici:
https://appium.github.io/Java-client/io/appium/Java_client/TouchAction.html
Voici la méthode qui a remplacé le tap () que vous utilisez:
et voici la documentation de PointOption, qui est le nouveau paramètre à utiliser avec tap ():
https://appium.github.io/Java-client/io/appium/Java_client/touch/offset/PointOption.html
Donc pour répondre à votre question, vous avez deux choix avec PointOption:
TouchAction touchAction = new TouchAction(driver);
touchAction.tap(PointOption.point(1280, 1013)).perform()
TouchAction touchAction = new TouchAction(driver);
touchAction.tap(new PointOption().withCoordinates(1280, 1013)).perform()
Comme différentes options sont introduites après une mise à jour, cela fonctionnera pour vous
new TouchAction(driver).tap(PointOption.point(x,y)).waitAction(waitOptions(Duration.ofMillis(duration))).moveTo(PointOption.point(x, y)).release().perform();
}
Une alternative à la fonction tap/press obsolète est la fonction 'longPress'. Voici la fonction:
public T longPress(LongPressOptions longPressOptions) {
ActionParameter action = new ActionParameter("longPress", longPressOptions);
parameterBuilder.add(action);
//noinspection unchecked
return (T) this;
}
Pour plus d'informations, voir: https://github.com/appium/Java-client/blob/master/src/main/Java/io/appium/Java_client/TouchAction.Java