appium java版本错误_升级Appium最新java-client 6.0.0包后-问题来了...

4db850f833b151dd4bd2e84a13e51b6d.png

前段时间由于想把自己开源的测试平台LuckyFrame集成移动端的自动化测试,所以选择了Appium,然后把Appium的JAVA客户端更新到java-client 6.0.0-BETA2,发现其中有关于界面滑动(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

d62470afa81849944b7488ed3ac24beb.png

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

坐标长按

a4b977e06aa340390e719fd59a0c00f9.png

拖动

43e0c3f3f207536c5e5d19efe9249309.png

按住坐标

6d4f2aef663e6a436d1874951c467b87.png

持续时间

cc67999ca90d92a803ff930aae5c194c.png

点击坐标

ed63ae0e2f1ac6a333f652cac4a56012.png

具体代码如下:

怎么去初始化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时,传入的坐标不再是相对坐标了,而是前一个坐标的偏移坐标。

4e1c4843bfb92baf19d32f4e2b368c1f.png

1c2c072588d8f0d4669e31c9eb90d52f.png

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值