zoukankan      html  css  js  c++  java
  • Appium 滑动踩坑记

    前言

    对于不同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();
    
  • 相关阅读:
    Core Data 入门
    iOS布局之Auto Layout
    iOS 布局之 Springs and Struts
    Soul 学习笔记---使用 nacos 实现数据同步上篇(七)
    Soul 学习笔记---使用 zookeeper 实现数据同步(六)
    Soul 学习笔记---数据同步 websocket 连接建立过程分析(五)
    Soul 学习笔记---soul 数据同步的浅显分析(四)
    Soul学习笔记---运行 soul-examples-dubbo(三)
    Soul学习笔记---运行 soul-examples-http(二)
    windows下安装zookeeper 及 遇到的问题---打开zkServer.cmd闪退,此时不应有 Javajdk1.8.0_144
  • 原文地址:https://www.cnblogs.com/yyoba/p/11049522.html
Copyright © 2011-2022 走看看