【APP自动化测试】Appium新用法:如何实现手势放大缩小

既然是新用法,肯定是在其他地方不会随处见到的,搞不好还是独一份。

Appium 的放大缩小操作经历了几次大的改版,已经改的面目全非,绝大多数的老教程现在已经失效。最开始 Appium 提供了现成的方法可以直接调用,后来又全部转移到 MultiAction 这个类中,大多数的教程都是基于 MultiAction 这个类实现放大缩小功能。

但是在新版的 Appium 中,MultiAction 这个类被移除了,甚至 TouchAction 这个类也移除了,直接导致现有的教程全部失效。从 2.0 版本后,全部都要使用 w3c action 来代替。


在这里插入图片描述

w3c 操作

所谓的 w3c action,是 w3c 给 webdriver 提供的一套底层接口,用于向web浏览器提供虚拟设备输入。从概念上讲,本地发送一系列动作,这些动作对应于每个输入设备在每个时期的状态变化。
在这里插入图片描述

例如,click 点击由一个输入设备(鼠标)和两个记号组成的动作序列(pointerDown、pointerUp)表示,第一个包含按键向下动作(pointerDown),第二个包含按键向上动作(pointerUp)。

而不论是缩小和放大,都是由两个输入设备(手指1,手指2)和三个记号组成的动作序列表示,每个手指依次执行:

  • pointerDown,两个手指按下
  • pointerMove,两个手指向相反方向移动
  • pointerUp,两个手指抬起。

 
在这里插入图片描述

现成的参考案例

Appium 本身已经基于 w3c action 封装了两个常用的方法,一个是 swipe ,另一个是 tap 方法,在实现放大缩小功能时,我们不需要自己从 0 到 1 实现,而是借助这两个已经封装完成的方法,修改一下。

首先看 tap 操作的源码:
在这里插入图片描述

  • 第 134 行,初始化了一个虚拟设备,也就是触屏操作当中的一个手指,如果有多个手指,就初始化多次。
  • 第 135 行,手指移动到一个坐标位置
  • 第 136 行,手指按下屏幕
  • 第 137-140 行,手指停顿
  • 第 141 行,手指抬起。

可以发现,tap 的操作完全是基于流程图中的 3 个子操作完成的。因此我们可以使用同样的思路实现方法功能。

如何完成放大

1、使用 add_point_input 添加手指,放大需要用到两个手指。
2、使用 create_pointer_move 移动到屏幕的正中间
3、使用 create_pointer_down 按下手指
4、使用 create_pointer_move 往屏幕相反方向移动
5、使用 create_pointer_up 松开手指

  • 在这里插入图片描述
     

如何完成缩小

实现缩小的时候,代码完全可以使用放大功能的代码,只是两个手指先移动到屏幕两端,往中间缩,整个移动的过程相反。

总结

随着 Apppium2.x 发布的临近,appium 很多的操作 API 都有比较大的变化,很多之前很有用的教程可能会逐渐失效。

我在之前也是使用 MultiAction 实现放大缩小,但是为了和新版匹配,还是尽早切换成新用法。在编写这套代码前,我也翻阅了很多资料,想找到现成的代码直接套用,但是没有找到,因此才自己实现。

在实现之前,我首先从源代码的警告提示中获得线索,阅读了appium官方提供的 w3c actions 说明。但我发现这个说明不详细,于是又从官方文档摸到了 w3c actions spec 文档阅读,终于理清楚了它的运行机制。

有了理论的支撑,我便尝试在现有框架的源码实现中找灵感,我发现 tap 方法和 swipe 方法都有非常大的借鉴意义。通过这两个方法的源码,我搞清楚了触控操作的大概实现思路和代码编写套路。

之后如果遇到类似的问题,也有一套行之有效的方法可以照着做了。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值