首頁 > 移動平臺 > 詳細

Appium 滑動踩坑記

時間:2019-06-19 09:52:13      閱讀:60      評論:0      收藏:0      [點我收藏+]

標簽:code   tar   per   swipe   cti   整數   版本   java   不同的   

前言

對于不同java-client版本,很多的API已經產生大的變化,所以一些API大家會發現已經失效或者使用方式發生了變化,滑動就是其中一項,這篇文章對滑動在不同的java-client版本以及不同的Appium版本使用給大家介紹下,避免大家踩坑。

不同的java-client版本

當前Appium版本為Appium desktop V1.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使用方式相比較V5.0.4發生了變化,參數由之前的int類型(XY軸坐標)變成了PointOption類型

單次滑動
        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版本 V6.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)

此版本Appium又改變了,多次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();

Appium 滑動踩坑記

標簽:code   tar   per   swipe   cti   整數   版本   java   不同的   

原文:https://www.cnblogs.com/yyoba/p/11049522.html

(0)
(0)
   
舉報
評論 一句話評論(0
登錄后才能評論!
? 2014 bubuko.com 版權所有 魯ICP備09046678號-4
打開技術之扣,分享程序人生!
             

魯公網安備 37021202000002號

湖南快乐十分钟走势图