zoukankan      html  css  js  c++  java
  • 问题(一)升级Appium最新遇到滑动的坑

    Appium的JAVA客户端更新到java-client 6.0.0-BETA3后,发现其中有关于界面滑动(swipe TouchAction)方面的升级(也有可能在之前的版本已经更新过类似的内容,没仔细看),跟以前旧版本的使用方法不太一样。

    新版本的java-client已经取消swipe方法,以前在老版本中使用这个方法的同学都可以忘记他了,所以可以改用TouchAction的方法替代界面滑动,但是同时我也发现,很多TouchAction类中的很多老方法也都已经弃用,具体可以参考这边的官方说明文档:

    https://static.javadoc.io/io.appium/java-client/6.0.0-BETA2/io/appium/java_client/TouchAction.html

    大概说一下,以前直接使用int类型(XY轴)去定位还有用到Duration类型的方法,基本全部废弃了,现在都改用类似下面这种方式,也就是使用了PointOption.point(X坐标, Y坐标),目前看到的能使用的API只有下面的几个了,其实是整个API蛮得更加简洁了。

    坐标长按

    拖动

    按住坐标

    持续时间

    点击坐标

    具体代码如下:

    怎么去初始化TouchAction

    AndroidTouchAction action = new AndroidTouchAction(driver);

    点击如下坐标

    action.press(PointOption.point(23, 22))

    点击如下坐标,持续N秒

    int nanos=(int) (second*1000);

    Duration duration = Duration.ofNanos(nanos);

    action.press(PointOption.point(23, 22)).waitAction(WaitOptions.waitOptions(duration))

    下面是Android示例拖动当前页面向下滚动,亲测通过,如果是IOS,估计也只是把AndroidTouchAction 换成IOSTouchAction而已,没有测试IOS,有兴趣的同学可以试试:

    int nanos=(int) (1.5*1000);

    Duration duration = Duration.ofNanos(nanos);

    int width = ad.manage().window().getSize().width;

    int height = ad.manage().window().getSize().height;

    AndroidTouchAction action = new AndroidTouchAction(ad);

    action.press(PointOption.point(width/2, height*3/4)).waitAction(WaitOptions.waitOptions(duration)).moveTo(PointOption.point(width/2, height/4)).release().perform();

    上述代码用到的moveTo方法,我在使用中也碰到问题,如果只需要拖动一次的时候,是没有问题的。但是当我连续几次拖动时,坐标的数值出现了问题。

    比如代码:

    AndroidTouchAction action = new AndroidTouchAction(ad);

    action.press(PointOption.point(300, 700)).waitAction(WaitOptions.waitOptions(duration)).moveTo(PointOption.point(150, -250)).waitAction(WaitOptions.waitOptions(duration)).moveTo(PointOption.point(-250, 150)).release().perform();

    如下图所示:当连续几次moveTo时,传入的坐标不再是相对坐标了,而是前一个坐标的偏移坐标。

    按照API文档,moveTo方法说明,里面的坐标就是相对坐标,所以这里是否是API的一个BUG?或是故意为之?有待后续版本的验证了。

    有使用连续moveTo的要注意别掉坑里面了。

  • 相关阅读:
    Stm32高级定时器(三)
    Stm32高级定时器(二)
    Java网络编程
    Java锁详解
    Linux Shell入门
    Mysql锁详解
    Redis入门——Java接口
    Redis入门——安装与基本命令
    Eclipse创建maven工程后没有build path解决方案
    Jersey入门——对Json的支持
  • 原文地址:https://www.cnblogs.com/kaola8023/p/8478018.html
Copyright © 2011-2022 走看看