前言

对于不同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 滑动踩坑记的更多相关文章

  1. Vue + TypeScript + Element 搭建简洁时尚的博客网站及踩坑记

    前言 本文讲解如何在 Vue 项目中使用 TypeScript 来搭建并开发项目,并在此过程中踩过的坑 . TypeScript 具有类型系统,且是 JavaScript 的超集,TypeScript ...

  2. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  3. Spark踩坑记——数据库(Hbase+Mysql)

    [TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...

  4. 【踩坑记】从HybridApp到ReactNative

    前言 随着移动互联网的兴起,Webapp开始大行其道.大概在15年下半年的时候我接触到了HybridApp.因为当时还没毕业嘛,所以并不清楚自己未来的方向,所以就投入了HybridApp的怀抱. Hy ...

  5. Spark踩坑记——共享变量

    [TOC] 前言 Spark踩坑记--初试 Spark踩坑记--数据库(Hbase+Mysql) Spark踩坑记--Spark Streaming+kafka应用及调优 在前面总结的几篇spark踩 ...

  6. Spark踩坑记——从RDD看集群调度

    [TOC] 前言 在Spark的使用中,性能的调优配置过程中,查阅了很多资料,之前自己总结过两篇小博文Spark踩坑记--初试和Spark踩坑记--数据库(Hbase+Mysql),第一篇概况的归纳了 ...

  7. djangorestframework+vue-cli+axios,为axios添加token作为headers踩坑记

    情况是这样的,项目用的restful规范,后端用的django+djangorestframework,前端用的vue-cli框架+webpack,前端与后端交互用的axios,然后再用户登录之后,a ...

  8. HttpWebRequest 改为 HttpClient 踩坑记-请求头设置

    HttpWebRequest 改为 HttpClient 踩坑记-请求头设置 Intro 这两天改了一个项目,原来的项目是.net framework 项目,里面处理 HTTP 请求使用的是 WebR ...

  9. vue踩坑记

    vue踩坑记 易错点 语法好难啊qwq 不要把'data'写成'date' 在v-html/v-bind中使用vue变量时不需要加变量名 在非vue事件中使用vue中变量时需要加变量名 正确 < ...

随机推荐

  1. np.broadcast_to()的函数使用及维度增加的表达

    import numpy as npanchors=np.ones((2,3))anchor = np.broadcast_to(anchors, (5,)+anchors.shape) # 标红字体 ...

  2. 微服务架构 ------ 插曲 hikari连接池的配置

    开胃菜:据说hikari连接池很快,快到让另一个连接池的作者抛弃对自己连接池的维护,并且强烈推荐使用hikari 连接池目前我们项目使用的有两个 一个是Druid , 一个是 Hikari, 其中Dr ...

  3. linux命令之——grep详解

    grep命令用于查找文件里符合条件的字符串:也可以用于查找内容包含指定的范本样式的文件.它能使用正则表达式搜索,用于在文件中搜索指定的字符串模式,列出含有匹配模式子符串的文件名,并输出含有该字符串的文 ...

  4. 【转载】C#的ArrayList使用IndexOf方法查找第一个符合条件的元素位置

    在C#的编程开发中,ArrayList集合是一个常用的非泛型类集合,在ArrayList集合中如果需要查找第一个符合条件的元素所在的位置,可以使用ArrayList集合的IndexOf方法,Index ...

  5. 【译】使用WebDriver采样器将JMeter与Selenium集成

    原为地址:https://dev.to/raghwendrasonu/jmeter-integration-with-selenium-using-webdriver-sampler-176k 第一步 ...

  6. java mail 封装工具类使用

    直接上代码 配置QQ邮箱的IMAP 进入qq电子邮件点击 设置->账户里开启 SMTP 服务(开启IMAP/SMTP服务) 注意:在启用QQ邮箱的14天之后才能开启此服务 创建Sendmail ...

  7. mysql的my.cnf

    配置参数详解 [client] #客户端设置,即客户端默认的连接参数port = 3307   #默认连接端口socket = /data/mysqldata/3307/mysql.sock #用于本 ...

  8. Hexo主题开发

    序章 想要一个自己的知识管理系统,用了 Hexo ,但是没有发现自己心仪的主题,就自己做了一个.本文记录了制作的全过程.本人编码功底和前端知识并不是特别雄厚,希望能由此文引出各路大神的兴趣,以后制作出 ...

  9. terminator

    terminator 能够实现linux 终端的分屏显示. 安装 sudo add-apt-repository ppa:gnome-terminator sudoapt-get update sud ...

  10. STL杂记

    STL介绍: 我所理解的stl: 容器: 是一种数据结构,如list,vector,和deques ,以模板类的方法提供.为了访问容器中的数据,可以使用由容器类输出的迭代器: 算法:  是用来操作容器 ...