今天就继续给大家介绍一下Airtest框架常用的核心API用法,这也是熟悉使用Airtest框架的必备手册之一。
(一)官方文档
官方文档
https://airtest.doc.io.netease.com/IDEdocs/airtest_framework/1_airtest_api/
(二)核心API介绍
1.touch:点击
语法格式:touch(v,times, kwargs)
v:点击位置,可以是图片实例,也可以绝对坐标
times:点击次数,times默认是1
duration:按住时间,默认是0.01s
right_click:右键点击,仅限windows使用,默认值为False
# 1. 通过所截取的图片进行比对,比对成功,则点击
touch(Template(r"tpl1689155274882.png", record_pos=(-0.176, -0.306), resolution=(1080, 2400)))
# 2. 通过页面的绝对坐标点击,AirtestIDE设置中可开启绝对坐标和相对坐标查看
touch([1, 1])
# 点击2次
touch([1,1],times = 2)
# 按住2s
touch([1,1], duratio=2)
2.Template:图片实例
说明:虽然Template是touch()方法中的一个参数,但这个非常重要,涉及如何正确使用,以及如何提高图片识别率
filename:是必填参数,就是图片路径,可以是相对路径或者绝对路径(如果使用AirtestIDE截图时会存在默认路径下)
threshold:图像识别的阈值,只有当图像识别结果的可信度大于阈值时,才算是找到图像识别的结果,阈值越高,对图像匹配的精确度就越高,若不添加该参数,该值默认为0.7,该值可设置的范围为0~1
target_pos:用于设置图像的点击位置,为1-9的整数,默认值为5(也就是图像的中心位置,1为左上角位置,9为右下角位置)
record_pos:计算坐标对应的中心点偏移值相较于设备分辨率的百分比,匹配时会优先匹配这附近的画面(如果使用AirtestIDE截图时会自动记录该参数值)
resolution:用于记录截图时的手机分辨率,也可以自己将分辨率填写到此处
rgb:是否强制使用彩色图像识别,该参数默认为False,Aitest会将图片转成灰度图片后才会进行图像识别,若是设置为True,则不会进行灰度化,一般适用于图片相似度极高,只是文字颜色有所区别,为了提高图像识别的精确度,可使用该参数
scale_max:是算法mstpl的专属参数,用于调节匹配的最大范围,默认值800, 取值范围 [700 , 2000],推荐值 740, 800, 1000
scale_step:算法mstpl的专属参数,用于控制搜索比例步长,它代表匹配时搜索的精细程度。进行图像匹配时,会在原始截图的一定缩放范围内以截图最长边 * scale_step 的步长进行搜索。默认值0.01,取值范围 [0.001, 0.1],推荐值 0.02, 0.005, 0.001
3.swipe:滑动
语法格式:swipe(v1,v2,vector,duration)
v1:滑动的起点,可以是一个图片实例,或是绝对坐标(x,y)
v2:滑动的终点,可以是一个图片实例,或者是绝对坐标(x,y)
vecotr:滑动动作的矢量坐标,可以是绝对坐标(x,y)或者是屏幕百分比
duration:在屏幕上滑动的时长,默认是0.5s
steps:滑动过程的步骤,默认是5
fingers:滑动的手指数量,1或者2,默认是1
swipe有2种传入参数的方式:
从v1滑动v2,swipe(v1,v2)
swipe((672,1214),(336,1305))
从v1开始滑动,沿着vector方向,swipe(v1,vector=(x,y))
swipe(Template(r"tpl1574067097045.png", record_pos=(0.042, 0.145), resolution=(1080, 1920)), vector=[-0.2666, -0.0005])
4.text:输入文本
语法格式:text(text,enter)
text:输入的文本
enter:是否在输入完毕后,执行一次enter,相当于keyevent(‘ENTER’),默认是True,如果仅是想输入文字,而不执行Enter,则可以传入False
search: Android设备特有的参数,是否要按下输入法键盘中的search键,默认为False,如果需要,则传入True即可
# 设置search:True
text('输入的文本', search=True)
备注:部分机型无法通过该方法输入,则可以通过adg shell input 命令方式输入
shell("input text 'hello world'")
5.keyevent:按键事件
应用场景:可以删除输入框内容、返回上一页,合理的使用keyevent()接口,在一些情况下会使得脚本的兼容性更好
语法格式:keyevent(keyname, **kwargs)
keyname:平台相关的按键名称
**kwargs:平台相关的参数
Android平台支持的按键事件
# 点击home键,平台
keyevent('HOME')
# 另外平台专门提供了一个home()方式,实现的效果一样
home() # 相当于点击HOME键
# 点击back键
keyevent('BACK')
# 点击删除键
keyevent('KEYCOOE_DEL')
ios平台支持的按键事件
# iOS设备现在暂时 只支持 HOME 按键的keyevent
keyevent("HOME")
6.assert_exists:断言
说明:Airtest给我们提供了assert_exists和assert_not_exists两个接口,来断言一张图片存在或不存在于当前画面中。
语法格式:assert_exists(图片实例,msg)
图片实例:即是需要被断言的图片
msg:断言的描述,会被记录在报告中
assert_exists(Template(r"tpl1578970400453.png", record_pos=(-0.345, 0.142), resolution=(1080, 1920)), "断言存在")
感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取