不知道同学们会不会有这样的烦恼:鼓起动力写脚本的时候,却发现官方文档的内容太零散,总是找不到自己想要的功能介绍;小白刚入门,还不会看源码,常常面对一大堆陌生的接口根本无处下手。
作为万能的官方小助手,肯定要想办法把各种常用的接口给新手同学整得明明白白!接下来我们会连载几期的推文,尽量把Airtest和poco的各种API和设置给新手同学讲清楚,另外每一个API和设置,我们都会附上示例方便同学们模仿学习。(Airtest老司机可以自动跳过啦,或者先收藏起来以后可以查漏补缺用)
今天我们就先给同学们安排上Airtest绝大部分API的功能和用法示例,包含以下4个方面:
自动配置运行环境的接口,可以配置当前脚本所在路径、使用的设备、log内容的保存路径、项目根目录和截图压缩精度:
auto_setup(basedir=None,devices=None,logdir=None,project_root=None,compress=None)新建.air脚本时,会自动插入这个脚本初始化接口:
图中的auto_setup接口表示,当前脚本所在路径为变量__file__,并且尝试连接第一台安卓设备。(不填入设备参数的情况下,都是尝试连接第一台安卓设备)。
接口的其它示例:
在IDE新建.py脚本时,会自动在脚本中插入如下的初始化接口:
上面这段代码的意思是说,当使用pythonxx.py来运行本文件,且不带任何命令行参数时,则ifnotcli_setup()的判断成立,自动使用auto_setup这个接口来对运行环境进行初始化。这样只需要在写.py脚本时,在auto_setup()里填写好指定的参数就能直接用pythonxx.py指令来运行脚本了。
连接设备的接口,需要传入用于初始化设备的URI字符串,示例:
初始化设备的接口,需要传入设备平台、设备的uuid和可选参数等,其中uuid为,Android的序列号,Windows的窗口句柄,或iOS的uuid:
init_device(platform='Android',uuid=None,**kwargs)接口使用示例:
返回当前正在使用中的设备实例,用法示例如下:
dev=device()dev.swipe_along([[959,418],[1157,564],[1044,824],[751,638],[945,415]])4)设置当前设备:set_current()设置当前的使用设备,可以用于在多设备之间切换使用,示例如下:
在设备上启动目标应用,需传入应用的包名,支持Android和iOS平台,示例:
在设备上终止目标应用的运行,需传入应用的包名,支持Android和iOS平台,示例:
清理设备上的目标应用数据,需传入应用的包名,仅支持Android平台,示例:
clear_app("com.netease.cloudmusic")4)安装应用:install()安装应用到设备上,需传入完整的apk的安装路径,仅支持Android平台,示例:
卸载设备上的应用,需传入被卸载应用的包名,仅支持Android平台,示例:
对目标设备进行一次截图,并且保存到文件中,可以传入截图文件名、截图的简短描述、截图压缩精度和截图最大尺寸,示例如下:
在设备上进行点击操作,可以传入点击位置、点击次数等参数,不同平台下的可选参数稍有不同,示例如下:
#传入绝对坐标作为点击位置touch([100,100])#传入Template图片实例,点击截图中心位置touch(Template(r"tpl1606730579419.png",target_pos=5,record_pos=(-0.119,-0.042),resolution=(1080,1920)))#点击2次touch([100,100],times=2)#Android和Windows平台下,可以设置点击时长touch([100,100],duration=2)
在设备上进行滑动操作,有2种传参方式,一种是传入滑动的起点和终点,一种是传入滑动的起点和滑动方向vector,示例如下:
#传入绝对坐标作为滑动的起点和终点swipe([378,1460],[408,892])#传入图像作为起点,沿着某个方向滑动swipe(Template(r"tpl1606814865574.png",record_pos=(-0.322,0.412),resolution=(1080,1920)),vector=[-0.0316,-0.3311])#常见的还可以设置滑动的持续时长swipe([378,1460],[408,892],duration=1)
在设备上输入文本,文本框需要处于激活状态(即先点击文本框,再使用text()接口进行输入)。示例如下:
deftest():print("未等待到目标")wait(Template(r"tpl1606821804906.png",record_pos=(-0.036,-0.189),resolution=(1080,1920)),timeout=120,interval=3,intervalfunc=test)
检查当前设备画面上是否存在目标截图,常和判断语句一起使用,示例:
ifexists(Template(r"tpl1606822430589.png",record_pos=(-0.006,0.069),resolution=(1080,1920)))touch(Template(r"tpl1606822430589.png",record_pos=(-0.006,0.073),resolution=(1080,1920)))
在设备屏幕上查找所有出现的目标并返回其坐标列表,示例:
a=find_all(Template(r"tpl1606822767366.png",record_pos=(-0.034,-0.184),resolution=(1080,1920)))print("************************")print(str(a))
在设备上执行keyevent按键事件,不同平台下支持的keyevent差别比较大,请同学们按照具体平台的支持情况来使用,常用的keyevent如下:
唤醒并解锁目标设备,仅支持安卓平台,并且在部分品牌手机上可能无法生效,示例: