web-dev-qa-db-fra.com

La fonction Appium tap (int x, int y) semble obsolète. Des remplacements?

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!

5

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:

https://appium.github.io/Java-client/io/appium/Java_client/TouchAction.html#tap-io.appium.Java_client.touch.offset.PointOption-

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:

  1. Utilisation de PointOption.point (x, y), qui est une instance statique de PointOption avec ces valeurs de coordonnées
TouchAction touchAction = new TouchAction(driver);
touchAction.tap(PointOption.point(1280, 1013)).perform()
  1. Utilisation de PointOption (). WithCoordinates (x, y), qui renvoie une référence à l'instance PointOption après avoir défini ces valeurs de coordonnées
TouchAction touchAction = new TouchAction(driver);
touchAction.tap(new PointOption().withCoordinates(1280, 1013)).perform()
14
Taryn

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();

    }

0
Anuj Bansal

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

0
Chuk Ultima