一、介绍
1、是什么?为什么?怎么用?
Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具。 Airtest的框架是网易团队自己开发的一个图像识别框架,这个框架的祖宗就是一种新颖的图形脚本语言Sikuli。 Sikuli这个框架的原理是这样的,计算机用户不需要一行行的去写代码,而是用屏幕截屏的方式,用截出来的图形摆列组合成神器的程序,这是Airtest的一部分。
Airtest也基于poco这个UI控件搜索框架,这个框架也是网易自家的跨平台UI测试框架,原理类似于appium,通过控件的名称,id之类的来定位目标控件, 然后调用函数方法,例如click(),swip()之类的方法来对目标控件进行点击或者是操作。
2、优缺点
优点
1、有个IDE,大大地减少了写自动化脚本的难度,搭建环境、写脚本,运行脚本,查看报告都一站式解决了
2、图像识别,对不能用ui控件定位的地方的,使用图像识别来定位,对一些自定义控件、H5、小程序、游戏,都可以支持
3、支持多个终端,使用图像识别的话可以一套代码兼容android和ios哦,用ui控件定位的话需要兼容一下。
4、对移动端友好
缺点:
1、图像变更后,会找不到控件。跟selenium类似
二、如何使用
2.1、下载airtestIDE
直接官网下载对应平台的包:http://airtest.netease.com/
![](https://img2020.cnblogs.com/blog/1004904/202106/1004904-20210611135406097-706004677.png)
2.2、连接手机
2.2.1、android连接
4种连接方式:真机usb连接、远程连接、无线连接、代码连接
以上连接方式都要开启USB调试。一般都在开发者选项---》usb调试
有的手机没有开发者选项,需要打开隐藏开关。如华为,连点8次关于手机,就会出来开发者选项
真机usb连接:
- 手机跟电脑用线连接起来
- 手机开启开发者选项--->USB调试
- 点击连接面板中的 refresh ADB 按钮,设备列表将会刷新,
- 点击列表内对应设备的 Connect 完成连接,
远程连接:
- 已知IP和端口的远程设备 ip:port,AirtestIDE可以直接连接,
- 点开设备窗内的 远程设备连接 按钮
- 将 adb connect ip:port 字段填入填充框内,点击 连接 按钮,
- 远程设备将出现在设备列表中,点击 connect按钮。
无线连接:
- 确保手机开启了USB调试选项,并先用USB线将手机和电脑连接起来
- 在电脑端执行命令 adb tcpip 5555 ,其中 5555 是端口号,可以根据自己的需求来指定,5555是默认值
- 获取手机的IP地址,可以在 手机设置-关于手机-状态信息-IP地址 里找到,也可以执行 adb ifconfig来查看
- 随后可以拔掉USB线,在AirtestIDE的 远程设备连接 处输入 adb connect 手机ip:刚才填入的端口号5555 ,点击连接,刷新ADB后就能在设备列表中看到连上的设备了
- 如果因为网络波动、重启ADB等原因导致连接断开,重新执行一次 adb connect ip:port 即可。
注意:
1更换一个网络环境需要使用新IP重新connect即可。
2但是如果手机重启了,就需要重新连接数据线再次开启端口。
3开启端口可以通过adb,也可以直接在手机上打开,但一般需要root权限和特殊软件。
在代码中连接:
如果在代码中/脚本运行时,需要填写Android:/// 字符串,又不清楚远程连接的手机应该如何填写的话,可以直接用AirtestIDE运行一次脚本,然后将IDE生成的 Android:/// 字符串复制使用。
字符串需要填写的内容为 Android://adbhost:adbport/serialno ,其中,adbhost和adbport一般来说默认都是本机adb,即 127.0.0.1:5037 ,在远程连接手机时,与本地手机不同的是设备号serialno
![](https://img2020.cnblogs.com/blog/1004904/202106/1004904-20210611135552860-1838280645.png)
2.2.2、ios连接
后期再补充
2.3、编写脚本
很简单的操作,不再详细介绍了具体看官网文档
2.4、运行脚本&查看报告
2.4.1、使用ide运行、查看报告
直接点击ide上的运行按钮,即可运行,log里面会显示当前执行的设备(这里的string串就可以放在代码里面连接)
运行完成后,点击操作区域的报告按钮,即可查看报告
![](https://img2020.cnblogs.com/blog/1004904/202106/1004904-20210611135650563-1209044661.png)
2.4.2、使用命令行运行、查看报告(本地python环境)
ide中也可以执行命令行,就是把用点击按钮运行时的log打印的启动命令重新输一下。这里不再讲(ps,这样还不如用ide的按钮运行。干嘛多次一举呢~~)
我们讲如何用本地python环境运行
准备环境:
- python环境,3.x的版本
- 安装airtest(pip3 install airtest)
- 安装poco(pip3 install pocoui)
运行脚本:
进入到对应的脚本目录,然后执行
python3 -m airtest run test1.air --device android://127.0.0.1:5037/TPG4C18308000271 --log log/
如果是连接了多个设备:python3 -m airtest run test1.air --device android://127.0.0.1:5037/TPG4C18308000271 --device android://127.0.0.1:5037/TPG4C18308000271 --log log/
脚本参数介绍:
【test1.air】是脚本的名称
【android://127.0.0.1:5037/TPG4C18308000271 】是设备号(在ide上运行的时候,log打印的那一串)
【log/】log的目录(相对test1.air的路径的)
当然除了 --device --log还有其他的一些参数,比如:--recording录屏等,具体用到看文档
生成报告:
airtest report test1.air --log_root log/ --outfile log/test1/test1_log.html --lang zh
脚本参数介绍:
--log_root log/表示用当前目录下,log/目录里面的log内容来生成了一个html报告;
--outfile log/test1/test1_log.html表示将这个html报告放在log目录下,命名为log.html;
--lang zh表示指定显示语言为中文。
![](https://img2020.cnblogs.com/blog/1004904/202106/1004904-20210611135909044-1489116165.png)
三、扩展
3.1、放到python项目里面批量运行
只需要把在ide中编写脚本,复制一份到该项目文件的air_case目录下即可(注意要复制所有的代码不只是.air文件,还包括图片信息)