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的要注意别掉坑里面了。

问题(一)升级Appium最新遇到滑动的坑的更多相关文章

  1. InstallShield 2012 Spring优惠升级到最新版本(2015.4.30之前)

    InstallShield 2012 Spring即将EOF,所以仍在使用InstallShield 2012 Spring的用户请注意下面内容: InstallShield 2012 Spring升 ...

  2. sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611。请将该数据库升级为最新版本。)

    最近工作中有一个sqlserver2005版本的mdf文件,还没有log文件,现在需要 附加到sqlserver2012,经过网上一顿搜索,把完整的过程奉上,供大家参考 首先创建数据库 再设置数据库的 ...

  3. tomcat 8.0安装ssl证书,及centos7.2 的openssl升级到最新版本,及ERR_SSL_OBSOLETE_CIPHER错误解决

    openssl官网https://www.openssl.org/source/下载最新的文件 2017-Feb-16 12:03:39 openssl-1.1.0e.tar.gz 安装的时候,可能由 ...

  4. centos7 docker升级到最新稳定版本

    原文:centos7 docker升级到最新稳定版本 一.前言 docker的版本分为社区版docker-ce和企业版dokcer-ee社,区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外 ...

  5. python - selenium 2 升级到最新版本

    python - selenium 2 升级到最新版本 之前一直用的是selenium 2.48 .firefox36 而实际用户的浏览器可能都有自动更新功能,所以版本基本上是最新的.所以这次专门做了 ...

  6. node 随便升级到最新版本的遭遇

    将node 升级到最新版本后,创建一个RN新项目,执行:react-native init AwesomeProject  遇到: error An unexpected error occurred ...

  7. [UE4]把工程升级到最新版本

    右键UE4工程文件,选择“Switch Unreal Engine version...” 确定后,再次双击打开工程升级到最新版本了.

  8. 【升级至sql 2012】sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611。请将该数据库升级为最新版本。)

    sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611.请将该数据库升级为最新版本.) 最近工作中有一个sqlserver2005版本的mdf文件,还没有log文件 ...

  9. 一行命令将ubuntu升级到最新版本

    zzupdate 是一个开源的命令行程序,通过将几个更新命令组合到一个命令中,使得将 Ubuntu 桌面和服务器版本升级到更新版本的任务变得容易一些. 将 Ubuntu 系统升级到更新的版本并不是一项 ...

随机推荐

  1. c++学习知识整理

    <iomanip>传送门:https://baike.baidu.com/item/iomanip/3319954?fr=aladdin linux为何用./运行程序:https://bl ...

  2. Educational Codeforces Round 68 (Rated for Div. 2)---B

    http://codeforces.com/contest/1194/problem/B /* */ # include <bits/stdc++.h> using namespace s ...

  3. git的实际工作经验总结

    分支工作的一个较佳的实践, 即git工作的最佳实践 从最初的svn到后来的git,上来给我的感觉就是git更方便, 可以在本地进行版本的提交,回退. 后来对hash有所了解, 知道了git的每个版本其 ...

  4. 《挑战30天C++入门极限》C/C++中字符串常量的不相等性及字符串的Copy

        C/C++中字符串常量的不相等性及字符串的Copy #include <iostream>    void main(void)  {      if("test&quo ...

  5. ubuntu18.04 安装UHD+GNU Radio

    参考链接: ubuntu16.04下安装uhd与gnuradio:https://blog.csdn.net/qq_37748396/article/details/80339366 GNU Radi ...

  6. 【随记】SQL Server配置管理器”远程过程调用失败“的问题解决

    打开配置管理器时出现如下错误: 问题原因: 在电脑上安装vs2012.vs2013,vs2015.vs2017.vs2019时会安装[Express LocalDB] 解决方案: 卸载所有[XXXLo ...

  7. docker 随笔记录

    .docker 固定网络ip地址,启动 Docker的时候,用 --network 参数,可以指定网络类型 eg:docker run -itd --name test1 --network brid ...

  8. mac使用crawlab

    这里采用docker-compose的 第一步拉镜像 docker pull tikazyq/crawlab:latest 第二步修改compose文件 docker-compose.yml文件 ve ...

  9. JVM 初始化阶段例子

    创建如下Demo package com.example.jvm.classloader; class Parent{ static int a = 3; static { System.out.pr ...

  10. 程序员体验AI换脸就不要用ZAO了,详解Github周冠军项目Faceswap的变脸攻略

    本文链接:https://blog.csdn.net/BEYONDMA/article/details/100594136       上个月笔者曾在<银行家杂志>发文传统银行如何引领开放 ...