Appiumスライドピット記

3739 ワード

前言
Java-clientバージョンによって、多くのAPIが大きく変化しているため、一部のAPIでは失効したり、使用方法が変化したりしていることがわかります.スライドはその1つです.この文章では、java-clientバージョンや異なるAppiumバージョンでスライドして使用することを紹介し、ピットを踏まないようにしています.
異なるjava-clientバージョン
現在のAppiumバージョンはAppium desktop V 1である.8.2(Appium Server V1.9.1)
java-client V4.1.2
このバージョンでは、java-clientにはswipeメソッドがあり、スライドを完了するのに役立ちます.

void io.appium.java_client.android.AndroidDriver.swipe(int startx, int starty, int endx, int endy, int duration)

//Convenience method for swiping across the screen.

Overrides: swipe(...) in AppiumDriver
Parameters:
startx starting x coordinate.
starty starting y coordinate.
endx ending x coordinate.
endy ending y coordinate.
duration amount of time in milliseconds for the entire swipe action to take

シングルスライド
//                ,     
androidDriver.swipe(145, 448, 345, 448, 300);

マルチスライド
        TouchAction touchAction = new TouchAction(androidDriver);
        touchAction.press(145,448).waitAction(100).moveTo(345, 448).moveTo(560, 448).release().perform();

java-client V5.0.4
このバージョンでは、swipeメソッドは失効しており、スライドを完了するためにコードを書く必要があります.
シングルスライド
        TouchAction touchAction = new TouchAction(androidDriver);
        Duration duration = Duration.ofMillis(100);
        touchAction.press(145,448).waitAction(duration).moveTo(345,448).release().perform();

マルチスライド
        TouchAction touchAction = new TouchAction(androidDriver);
        Duration duration = Duration.ofMillis(100);
        touchAction.press(145,448).waitAction(duration).moveTo(345, 448).moveTo(560, 448).release().perform();

java-client V6.1.0
このバージョンのAPIの使用方法はV 5を比較する.0.4が変化し、パラメータが前のintタイプ(XY軸座標)からPoint Optionタイプに変わりました
シングルスライド
        TouchAction touchAction = new TouchAction(androidDriver);
        Duration duration = Duration.ofMillis(100);
        touchAction.press(PointOption.point(145, 448)).waitAction(WaitOptions.waitOptions(duration))
        .moveTo(PointOption.point(345, 448)).release().perform();

マルチスライド
        //               
        TouchAction touchAction = new TouchAction(androidDriver);
        Duration duration = Duration.ofMillis(300);
        touchAction.press(PointOption.point(145, 448)).waitAction(WaitOptions.waitOptions(duration))
                .moveTo(PointOption.point(345, 448)).waitAction(WaitOptions.waitOptions(duration))
                .moveTo(PointOption.point(560, 448)).release().perform();

異なるAppiumバージョン
異なるAppiumバージョンは、単一スライドでは絶対座標の方式ですが、複数回スライドする場合(つまり複数回moveTo)には、入力された座標のあるAppiumは絶対座標ではなく、前の座標に対するオフセット量であることに注意してください.
現在のjava-clientバージョンV 6.1.0
Appium desktop V1.5.0(Appium Server V1.7.2)
このバージョンでは、複数回のmoveToは前の座標に入力されたオフセット量である必要があります.
        Duration duration = Duration.ofMillis(100);
        //Appium Server V1.7.2,                  
        touchAction.press(PointOption.point(145, 448)).waitAction(WaitOptions.waitOptions(duration))
                .moveTo(PointOption.point(200, 0)).waitAction(WaitOptions.waitOptions(duration))
                .moveTo(PointOption.point(200, 0)).release().perform();

Appium desktop V1.8.2(Appium Server V1.9.1)
このバージョンではApiumが変更され、複数回moveToが使用される絶対座標になります
        Duration duration = Duration.ofMillis(100);
        //Appium Server V1.9.1,            
        touchAction.press(PointOption.point(145, 448)).waitAction(WaitOptions.waitOptions(duration))
                .moveTo(PointOption.point(345, 448)).waitAction(WaitOptions.waitOptions(duration))
                .moveTo(PointOption.point(545, 448)).release().perform();