Appium 移动端自动化测试 —— 触摸(TouchAction) 与多点触控(MultiAction)

一、触摸 TouchAction

在所有的 Appium 客户端库里,TouchAction 触摸对象被创建并被赋予一连串的事件。

规范里可用的事件有: * 短按(press) * 释放(release) * 移动到(moveTo) * 点击(tap) * 等待(wait) * 长按(longPress) * 取消(cancel) * 执行(perform)

示例:

from appium import webdriver
from appium.webdriver.common.touch_action import TouchActiondriver=webdriver.Remote()
action = TouchAction(driver) # 创建 TouchAction 对象
# 在坐标(10,100) 位置按下,等待100ms,滑动到 ele 元素上释放
action.press(x=10,y=100).wait(100).move_to(el=ele).release()
# 执行动作
action.perform()

注意: action.press(x=10,y=100).wait(100).move_to(el=ele).release() 只是将动作存储在action 对象中,还没有执行,具体执行动作要使用 action.perform()。

点击操作

# 在控件的中心点上点击一下
tap(WebElement el)# 在(x,y)点点击一下
tap(int x, int y)# 以控件el的左上角为基准,x 轴向右移动x单位,y 轴向下移动y单位,在该点上点击
tap(WebElement el, int x, int y)

按下操作

#在控件上执行press操作。
press(WebElement el)  #在坐标为(x,y)的点执行press操作
press(int x, int y)  #在控件el的左上角的x坐标偏移x单位,y坐标偏移y单位的坐标上执行press操作。
press(WebElement el, int x, int y)

长按操作

# 控件长按
longPress(WebElement el)# 点长按
longPress(int x, int y)# 偏移点长按
longPress(WebElement el, int x, int y)
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

移动操作

#以el为目标,从另一个点移动到该目标上
moveTo(WebElement el) #以(x,y)点为目标,从另一个点移动到该目标上 
moveTo(int x, int y) # 以控件el的左上角为基准,偏移(x,y)。以该点为目标,从另一个点移动到该点上。
moveTo(WebElement el, int x, int y)

释放操作

release()   # 释放动作,与按下和长按联合使用

等待

# 代表一个空操作,等待一段时间
wait()# 等待ms毫秒
wait(int ms)

执行 TouchAction 存储的动作

# 执行动作
perform()# 也可以通过 driver 对象直接执行触摸操作
driver.perform(TouchAction().tap(el))

实例:九宫格解锁,九宫格坐标与解锁密码如下图

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction# 九宫格原点的位置,从左至右,从上至下
site = [(200, 200), (200, 400), (200, 600),(400, 200), (400, 400), (400, 600),(600, 200), (600, 400), (600, 600)]pwd = '01246'
pwd_site = []
# 将密码转换为坐标位置
for s in pwd:pwd_site.append(site[int(s)])driver = webdriver.Remote()
action = TouchAction(driver)# 在起始点按下
action.press(pwd_site[0]).wait(200)# 按照坐标点移动
for i in range(1, len(pwd_site)):action.move_to(pwd_site[i]).wait(200)
# 释放
action.release()# 执行动作
action.perform()

多点触控(MultiTouch)

MultiTouch对象是触摸操作的集合,只有两个方法,add 和 perform 。

add 于将不同的触摸操作添加到当前的多点触控中。

perform 执行多点触控动作

示例:

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.multi_action import MultiActiondriver = webdriver.Remote()# 创建触摸事件
action1 = TouchAction(driver).tap(x=100, y=100)
action2 = TouchAction(driver).tap(element=ele)# 创建多点触控对象
multi_action = MultiAction(driver)
# 同时执行 action1 和 action2 动作
multi_action.add(action1).add(action2)
# 执行多点触控
multi_action.perform()

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

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/157404.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue项目打包时按一定的名称规范生成对应的压缩包

在项目部署中经常需要将打包的dist按一定的名称压缩成压缩包,今天记录一下打包时生成压缩包的过程。其中有用到的npm包需要自己安装一下。 js文件放置的目录如下 compress.js内容如下: // compress.jsimport fs from "fs"; import shell fro…

Linux设置ssh免密登录

ssh连接其他服务器 基本语法 ssh 另一台机器的ip地址 连接后输入连接主机用户的密码,即可成功连接。 输入exit 可以登出; 由于我配置了主机映射所以可以不写ip直接写映射的主机名即可,Linux配置主机映射的操作为 vim /etc/hosts # 我自己…

uniapp-自定义表格,右边操作栏固定

uniapp-自定义表格,右边操作栏固定 在网上找了一些,没找到特别合适的,收集了一下其他人的思路,基本都是让左边可以滚动,右边定位,自己也尝试写了一下,有点样式上的小bug,还在尝试修…

PXI-6608 185745H-02 PXI-6527 185633D-01

PXI-6608 185745H-02 PXI-6527 185633D-01 人工智能技术并不新鲜,但运行它的数据和计算却很新鲜 对于那些对人工智能技术历史感兴趣的人来说,一些今天正在使用的技术从20世纪50年代和60年代就已经存在了。 但是,如果人工智能已经存在了这么…

06 # 手写 map 方法

map 的使用 map 自带循环功能&#xff0c;对数据中的元素进行加工&#xff0c;得到一个加工后的新数据 ele&#xff1a;表示数组中的每一个元素index&#xff1a;表示数据中元素的索引array&#xff1a;表示数组 <script>var arr [1, 3, 5, 7, 9];var result arr.ma…

芯象导播软件使用NDI协议输入输出

芯象导播软件使用NDI协议输入输出 在之前的文章中&#xff0c;我们介绍了NDI传输协议在OBS中的使用【详见】&#xff0c;今天我们说说在“芯象导播”软件中如何使用NDI。 OBS软件最大的特色就是“开源、免费”&#xff0c;虽然插件众多功能强大&#xff0c;但毕竟不是商用软件…

小程序的使用率不高应该怎么提高?

小程序用完即走的特点对于用户来说很爽&#xff0c;但对于商家来说&#xff0c;如果用户走了就不回来了&#xff0c;即小程序不能被用户反复使用&#xff0c;那就关系到小程序的留存能力&#xff0c;那么&#xff0c;如何才能有效地提高小程序的留存率&#xff1f; 1、利用模块…

STM32F407的系统定时器

文章目录 系统定时器SysTick滴答定时器寄存器STK_CTRL 控制寄存器STK_LOAD 重载寄存器STK_VAL 当前值寄存器STK_CALRB 校准值寄存器 初始化 Systick 定时器SysTick_InitSysTick_CLKSourceConfig delay_us寄存器delay_us库函数delay_xms短时delay_ms长时SysTick_Config 系统定时…

什么是文件安全

文件安全就是通过实施严格的访问控制措施和完美的权限卫生来保护您的业务关键信息不被窥探&#xff0c;除了启用和监控安全访问控制外&#xff0c;整理数据存储在保护文件方面也起着重要作用。通过清除旧的、过时的和其他垃圾文件来定期优化文件存储&#xff0c;以专注于关键业…

激光雷达的特性总结

激光能识别的上下高度范围是多少? 激光雷达是一种典型的束波型传感器,扫描的射线呈束波状,打到物体上是一个光斑,并且距离越远,光斑越大。激光光斑的大小和激光雷达的制造工艺相关,一般来说在10m处光斑的大小可以达到7cm半径的圆。此外还要考虑到同一个光斑打到不同物体…

太阳能电池提效远超33%!美国橡树岭科学家发布量子计算机新研究

​&#xff08;图片来源&#xff1a;网络&#xff09; 美国橡树岭国家实验室&#xff08;ORNL&#xff09;宣布&#xff0c;通过使用Quantinuum H1-1量子计算机&#xff0c;发现了在当前量子系统上提升太阳能电池效率的最佳算法。 该项目由美国能源部基础能源科学办公室资助。…