一、背景
Airtest作为一款优秀的自动化测试工具,有着强大的API功能,处理日常自动化测试过程中需要的各类操作。接着上一篇文章:UI自动化测试的正确姿势-Airtest第二弹, 今天我们继续分享Airtest API详解第二篇,结合自动化测试中的各类需求,看看如何通过使用Airtest来快速实现。
二、text
最常用的操作,在目标设备上输入文本,文本框需要处于激活状态。

参数如下:
text – 要输入的文本
enter – 是否在输入完毕后,执行一次 Enter操作 ,默认是True
search-是否在输入完毕后,执行一次 Seach操作,默认是False
text("孤勇者", enter=True)text("孤勇者", search=True)
备注:Windows下或移动设备上,如果enter参数或search参数设置了不生效,可以使用keyevent来操作enter、search键,或者通过点击相应的确认、搜索按钮来完成操作。
# 输入文字:孤勇者text("孤勇者")# 使用键盘上的回车键keyevent("{ENTER}")
三、keyevent
常用操作,在设备上执行keyevent按键事件。

参数:
keyname – 平台相关的按键名称,参考对应的平台接口文档。
Android按键:
直接调用了adb的keyevent(),相当于执行了 adb shell input keyevent KEYNAME
# 点HOME键keyevent("HOME")keyevent("3") # 也可以用数值来代表# 点BACK键# 如果你的脚本要同时兼容Android和iOS,则不要使用,因为iOS不支持keyevent("BACK")keyevent("4") # 也可以用数值来代表# 循环删除输入框内容# Airtest没有清空输入框的方法,所以可以模拟真实的手工操作,就是不停的按删除键for i in range(20):keyevent("KEYCODE_DEL") # 或keyevent("67")
这里为大家整理了常用的键值,已经比较全了,平时的操作都能覆盖到了:
keyevent 3 Homekeyevent 4 Backkeyevent 66 Enter 回车键keyevent 19 DPAD_UP 导航键 向上keyevent 20 DPAD_DOWN 导航键 向下keyevent 21 DPAD_LEFT 导航键 向左keyevent 22 DPAD_RIGHT 导航键 向右keyevent 23 DPAD_CENTER 导航键 确定OK键keyevent 24 VOLUME_UP 音量增加键keyevent 25 VOLUME_DOWN 音量减小键keyevent 82 Menu 菜单keyevent 5 Call 拨号盘keyevent 6 EndCall 挂机键keyevent 84 Search 搜索键keyevent 27 Camera 拍照键keyevent 80 Focus 拍照对焦键keyevent 26 Power 电源键keyevent 83 Notification 通知键keyevent 91 Mute 话筒静音键keyevent 164 Volume_Mute 扬声器静音键keyevent 92 PAGE_UP 向上翻页键keyevent 93 PAGE_DOWN 向下翻页键keyevent 67 DEL 退格键keyevent 112 FORWARD_DEL 删除键keyevent 124 INSERT 插入键keyevent 61 TAB Tab键keyevent 143 NUM_LOCK 小写键盘锁keyevent 115 CAPS_LOCK 大写锁定键keyevent 121 BREAK Break/Pause键keyevent 116 SCROLL_LOCK 滚动锁定键keyevent 168 ZOOM_IN 放大键keyevent 169 ZOOM_OUT 放大键keyevent 122 MOVE_HOME 光标移动到开始键keyevent 123 MOVE_END 光标移动到末尾键
Windows按键:
使用Python的第三方库 pywinauto.keyboard 进行按键点击
# 例如这是Enter键的输入方式,需要加上括号{}:keyevent("{ENTER}")# 符号^也代表了CTRL键,因此^a即为全选(Ctrl+A):keyevent("^a")# 符号%也代表了ALT键,因此%{F4}即为ALT+F4:keyevent("%{F4}")# 符号+也代表了SHIFT键,因此+{INS}即为SHIFT+INSERT, 效果等同于ctrl+v, 粘贴剪切板中的内容到当前位置:keyevent("+{INS}")
# -*- encoding=utf8 -*-__author__ = "yy"from airtest.core.api import *auto_setup(__file__, devices="Windows:///")keyevent("{ENTER}") # 按回车键keyevent("^a^c") # 全选并复制keyevent("^v") # 粘贴keyevent("'%{F4}") # 按ALT+F4
详细的按键key,参看:https://pywinauto.readthedocs.io/en/latest/code/pywinauto.keyboard.html
IOS按键:
IOS封闭性很高,只支持home/volumeUp/volumeDown3个按键:
keyevent("HOME")keyevent("volumeUp")keyevent("volumeDown")
四、snapshot
对目标设备进行一次截图,并且保存到文件中。常用于自动化测试报错时使用,或者做一些验证结果记录时使用。

参数:
filename – 保存截图的文件名,默认保存路径为 ST.LOG_DIR中
msg – 截图文件的简短描述,将会被显示在报告页面中
quality – 图片的质量,[1,99]的整数,默认是10
max_size –图片的最大尺寸,例如 1200
# 设置截图的质量为90, 图片尺寸不超过 1200*1200snapshot(filename="test2.png", msg="test", quality=90, max_size=1200)# 设置图片的质量为30,全局生效,不用每一次截图都单独设置了ST.SNAPSHOT_QUALITY = 30# 设置图片的尺寸不超过600*600,全局生效,不用每一次截图都单独设置了ST.IMAGE_MAXSIZE = 600
五、sleep
设置一个等待的时间。通常用于执行一个操作后,下一个页面需要等待几秒才能加载完毕时的测试场景。为了等待下一个页面加载完毕,就需要使用sleep。

参数:
secs – sleep的时长
六、assert_exists
验证目标图片在设备屏幕上存在,找不到目标图片则验证不通过,直接报错raise AssertError。通常用于执行某个操作后,验证是否正确出现了期望中的结果。

参数:
v – 要验证的目标图片
msg – 描述测试点,将记录在测试报告中

六、assert_not_exists
验证目标图片在设备屏幕上不存在,与assert_exists相对应,通常用于执行某个操作后,验证页面上不存在目标图片,以此来判断操作是否成功。
七、assert_equal/not_equal
验证两个值相等或不相等,通常用于测试脚本中做一些逻辑判断时使用,验证不通过则处罚assertion fails。

参数:
first – 用于判断的第一个值
second – 用于判断的第二个值
msg – 验证点的描述信息, 将会被记录在报告中
assert_equal(1, 1, msg="assert 1==1")
八、Demo演示
假设测试用例为:验证通过QQ音乐搜索框能正确搜索出指定的歌曲并播放
测试步骤:
1、点击QQ音乐搜索框
2、输入指定歌曲名"孤勇者",键盘按下回车键
3、正确搜索出陈奕迅版本的歌曲"孤勇者"
4、双击歌曲名称进行歌曲播放
使用Airtest编写的测试脚本如下:

脚本运行效果如下:
END
以上就是本次的全部内容,如果对你有帮助,麻烦点一点在看+点赞+分享,你的支持就是作者更新最大的动力~
最后,欢迎加入杨叔的测试交流群,沟通交流日常测试工作相关内容,2023一起升职加薪,学习进步!加群方式:扫码添加杨叔的微信号,备注(进群)

往期精彩文章推荐




