Airtest自动化测试

1. 安装AirtestIDE

AirtestIDE下载地址。我下载的是AirtestIDE_2019-09-10_py3_Mac10-12.dmg。下载完成之后,直接安装即可。

2. 设备连接

2.1 部署iOS-Tagent

iOS-Tagent下载地址


git clone git@github.com:AirtestProject/iOS-Tagent.git


把手机连接到电脑上然后 打开Xcode,  product -> Scheme -> WebDriverAgentRunner  如图

 

airtest poco怎么断言 airtest连接ios_iOS

1.png


然后点击  product -> Test  当出现如图的情况,说明iOS-Tagent环境部署成功
 (我自己本地部署后的服务器地址是: http://172.20.10.7:8100)

 

airtest poco怎么断言 airtest连接ios_airtest poco怎么断言_02

2.png

2.2 设置代理

iproxy 可以把iPhone端口映射到电脑端口,那么就可以通过访问电脑的端口访问到手机的端口了


brew install libimobiledevice    // 通过 Homebrew 安装iproxy

 iproxy 8100 8100    // 运行iproxy,将手机的8100端口,映射到电脑的8100端口上。这样我们就能通过访问电脑的8100端口来访问到手机了 (我运行部署的环境是8100,所以写的8100)

启动成功后,可以试着在浏览器访问 http://172.20.10.7:8100/status ,如果访问成功并且可以看到一些json格式的手机信息,即表示启动成功。如图所示:

 

airtest poco怎么断言 airtest连接ios_python_03

3.png

此时,访问 http://172.20.10.7:8100/inspector 可以看到iPhone屏幕投影在浏览器上 如图

 

airtest poco怎么断言 airtest连接ios_命令行_04

4.png

2.3 AirtestIDE与iPhone连接

通过ip方式连接iPhone,实时刷新界面,可进行UI测试。在AirtestIDE的iOS地址栏填入地址 http://172.20.10.7:8100,点击 “connect” 连接设备,开始编写你的Airtest测试脚本了。如图所示

 

airtest poco怎么断言 airtest连接ios_python_05

5.png

注意: Xcode中的iOS Simulator模拟器部署过程和真机一样,但是可以省略步骤2.2 设置代理,不需要另外执行proxy

3. 脚本编写

3.1 Airtest图像编写脚本 例如:使用 touch 操作,选择touch 按钮 如图

 

airtest poco怎么断言 airtest连接ios_airtest poco怎么断言_06

7.png

具体详情 可以参考 Airtest脚本编写

3.2 Poco编写脚本 如图

 

airtest poco怎么断言 airtest连接ios_airtest poco怎么断言_07

8.png

 

airtest poco怎么断言 airtest连接ios_python_08

9.png

具体详情 可以参考 Poco脚本录编写

4. 运行脚本

4.1 使用AirtestIDE运行脚本

单击AirtestIDE的 Run Script 按钮即可 如图

 

airtest poco怎么断言 airtest连接ios_python_09

10.png

4.2 使用AirtestIDE命令行运行

将运行脚本时 AirtestIDE 生成的这段命令行代码(如下图圈出来的部分)复制到你的命令行终端里,回车运行就可以了

 

airtest poco怎么断言 airtest连接ios_iOS_10

11.png

注意: 这种使用AirtestIDE命令行来运行脚本的方式,是一个简单快速的方式,假如想要批量执行、同时执行的话,可能会遇到效率不佳的问题。

4.3 使用本地python环境运行脚本

部署Python环境

Mac 系统自带Python 环境,环境支撑Python(2.7或<=3.6),我们更推荐使用 Python3


brew install python3

Airtest安装


pip install airtest

Poco安装


pip install pocoui  //请注意库的名称为 pocoui,不要填错

环境部署完成后,我们就能够脱离AirtestIDE,在不同的宿主机器和被测平台上运行脚本了。使用python命令行运行脚本


airtest run untitled.air --device ios:///手机设备号 --log log/
python -m airtest run untitled.air --device Android:///手机设备号 --log log/

这两个命令行的效果是相同的,我们用airtest运行了一个叫做 untitled.air 的脚本,传入了 --device 和 --log 两个参数,分别是我们的手机设备和log输出目录。

5. 生成报告

5.1 在IDE里点击生成报告按钮来生成报告

在运行脚本后,可以立即在log窗口中看到当前脚本执行成功还是失败,然而不能够看到更加详细直观的执行结果。在AirtestIDE中,可以点击上侧图标菜单的最后那个“查看报告”的按钮,快捷键为Ctrl+L,稍后片刻将会自动使用默认浏览器打开结果报告页面。如图所示:

 

airtest poco怎么断言 airtest连接ios_airtest poco怎么断言_11

12.png

另外,我们可以在AirtestIDE上右键点击脚本标题,选择“打开报告”,来打开log所在的文件夹。


 

airtest poco怎么断言 airtest连接ios_iOS_12

13.png

5.2 使用命令行来生成报告

我们的脚本运行过程,与报告生成过程是独立的两个步骤,所以我们可以先用airtest run 指令来运行脚本:


# 用airtest运行了untitled.air这个脚本
# airtest run 后面接的是脚本文件的路径
airtest run untitled.air

注意: 如果airtest run 指令没有指定--log参数,将不保存log内容和截图,且命令行会提示do not save log;如果指定--log log/, 将把生成的log内容放到当前命令行的执行目录里;如果指定了--log +某个指定目录 参数,log内容与截图将会放在指定目录里。

然后,我们可以运行 airtest report 指令来生成一份HTML格式的报告:


# 最简单的命令行,log文件与脚本文件在同一文件夹里
# 运行以下指令,在当前目录生成一个log.html
airtest report untitled.air log.html

具体详情 可以参考 Airtest_generate-html-report

*注意:在有些浏览器上打开报告可能出现白屏现象,这是由于官方对有些浏览器没有适配全,建议用最新版本的chrome去打开。

6. 常见的问题

6.1 如何在模拟器安装应用


把xx.ipa 改成xx.zip,解压得到xx.app
打开模拟器, 在终端运行 xcrun simctl install booted xx.app
tips: 不可以把真机 app 包安装在iOS模拟器上,真机的app是基于arm的,而模拟器是运行在 X86 指令集上的,强行安装会导致闪退的问题。

6.2 如何进行iOS多机测试


目前暂未开放iOS多机测试功能

6.3 Api 支持状况

iOS设备与Android设备有很大的不同,以下通用的 Airtest 的 API 在iOS上都是支持的:


start_app: OK
stop_app: OK
snapshot: OK
home: OK
touch: OK
swipe: OK
text: OK
wait: OK
exists: OK
find_all: OK
assert_exists: OK
assert_not_exists: OK
但是以下API是不支持的: - wake: 暂未支持 (考虑用home方法替代) - keyevent: 只支持home 事件 - clear_app: 暂未支持 - install: 暂未支持 - uninstall: 暂不支持

6.4 有些浏览器打开生成的报告空白


这是由于官方对有些浏览器没有适配全,建议用最新版本的chrome去打开。

作者:IAM121