UI自动化测试的正确姿势 —— Airtest设备连接&API详解第一篇
一、背景
Airtest作为一款优秀的自动化测试工具,有着强大的API功能,处理日常自动化测试过程中需要的各类操作。今天就给大家逐一介绍关于设备连接和常用API部分,结合自动化测试中的各类需求,看看如何通过使用Airtest来快速实现。
二、设备连接
1、Android真机连接
请使用USB线连接手机和电脑,手机上出现的允许USB调试 弹窗点击确定
点击连接面板中的刷新ADB 按钮,设备列表将会刷新
点击列表内对应设备的Connect 完成连接
若设备未刷出,点击重启ADB 按钮.
2、IOS真机连接
IOS的连接相对比较复杂,可以参看官方文档链接:https://airtest.doc.io.netease.com/IDEdocs/3.2device_connection/4_ios_connection/
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:822269834【暗号:csdn999】
?
3、Windows窗口连接,可通过以下三种方式:
- 选择游戏画面,将会有一个绿色/红色细线框,实时框选出鼠标位置对应的窗口
- 搜索窗口,在弹出的窗口list中选择要连接的窗口直接连接
以上两种都是将窗口嵌入到Airtest IDE中:
?如果窗口比较大,不适合嵌入到Airtest中的,或者嵌入后显示异常的,可以在"选项"》"设置"中,勾选上"Windows窗口无嵌入连接"选项:
?这样就可以使用无嵌入式的方式来连接窗口:
最后,如果被测的软件是需要全屏显示的,可以通过连接桌面来实现,点击连接桌面按钮:
运行时,将Airtest IDE最小化,让被测软件显示在最上层即可。
三、Airtest辅助窗常用API
想要用好Airtest,辅助窗中的功能是必不可少的,用好它能解决90%以上的操作问题。工欲善其事,必先利其器,因此我们先来介绍怎样使用这些功能来帮助我们解决自动化中常见的需求:
1、touch
最常用的操作,鼠标左键点击。框选你要点击的地方即可。默认是点击框选图片的中心位置。参数:
根据参数可以看出:
可以点击图片,也可以点击绝对坐标(x,y)
可以控制点击的次数。但是实测发现,有时候想双击,设置times=2,
并不能实现双击效果,而是要用另外一个函数:double_click来实现双击效果
可以设置鼠标左边点击后按住的时间,默认是0.01s, 就是单击效果。如果想实现长按1秒的效果,设置duration=1
可以通过设置right_click=True来实现右键点击效果(仅限windows模式)
2、wait
常用操作,等待当前画面上出现某个匹配的Template图片:
比如你做了一个操作要等几秒下一个页面上的元素才显示出来,通常的做法是强制sleep几秒之后,再操作。而用wait函数,则可以设置每隔多长时间就找一次,找到了就继续下一步,而不是每次都死等那么长的时间,可以提高脚本运行的速度。有以下参数可以设置:
v – 要等待出现的目标Template实例
timeout – 等待匹配的最大超时时长,默认为None即默认取 ST.FIND_TIMEOUT 的值
interval – 尝试查找匹配项的时间间隔(以秒为单位)
intervalfunc – 在首次尝试查找匹配失败后的回调函数
示例1:
# 每3秒查找一次, 120秒之后还没有找到则超时报错
wait(Template(r"tpl1606821804906.png"), timeout=120, interval=3)
示例2:
# 查找目标失败时,指定回调自定义的"notfound"函数
def notfound():
print("No target found")
wait(Template(r"tpl1607510661400.png"), intervalfunc=notfound)
3. swipe
在当前设备画面上进行一次滑动操作:
v1 – 滑动的起点,可以是一个Template图片实例,或是绝对坐标 (x, y)
v2 – 滑动的终点,可以是一个Template图片实例,或是绝对坐标 (x, y)
vector – 滑动动作的矢量坐标,可以是绝对坐标 (x,y) 或是屏幕百分比,例如 (0.5, 0.5)
常用场景1:当前屏幕上没有你要操作的内容,需要手机上滑0.5个屏幕,才能点击你想点击的内容
w,h=device().get_current_resolution()#获取手机分辨率
touch([0.5*w, 0.5*h])#点击手机中心位置
swipe((0.5*w,0.8*h),vector=(0,-0.5),duration=0.1) #在0.1s内上滑0.5个屏幕
常用场景2:app打开后,有5个介绍页,滑动后才能正式进入app首页,这个时候就可以使用swipe函数来实现:
# 收取设备的宽和高
width, height = device().get_current_resolution()
# 计算滑动点的起始位置和结束位置
start_pt = (width * 0.9, height / 2)
end_pt = (width * 0.1, height / 2)
# 滑动5次,每次中间睡眠1秒,等待设备响应
for i in range(5):
swipe(start_pt, end_pt)
sleep(1)
4. exists
检查设备上是否存在给定目标, 如果未找到目标,则返回False,否则返回目标的坐标:
常用场景:比如我们进入某个页面时,屏幕上可能会弹出一个弹窗广告,但也有可能不弹。如果弹出了弹窗广告,我们就要先关掉弹窗,然后继续操作下一步。
# 先判断是否存在弹窗图片,存在就点击弹窗图片上的关闭按钮
if exists(Template(r"弹窗图片.png")):
touch(Template(r"弹窗图片上的关闭按钮.png"))
===================================================================
以上就是本次的全部内容,喜欢的宝子们,麻烦点个赞+收藏+关注,一键三连啦~
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!