Airtest自动化测试

1. 安装AirtestIDE

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

2. 设备连接

2.1 部署iOS-Tagent

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

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

1.png

然后点击 product -> Test 当出现如图的情况,说明iOS-Tagent环境部署成功

(我自己本地部署后的服务器地址是: http://172.20.10.7:8100)

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格式的手机信息,即表示启动成功。如图所示:

3.png

4.png

2.3 AirtestIDE与iPhone连接

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

5.png

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

3. 脚本编写

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

7.png

3.2 Poco编写脚本 如图

8.png

9.png

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

4. 运行脚本

4.1 使用AirtestIDE运行脚本

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

10.png

4.2 使用AirtestIDE命令行运行

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

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,稍后片刻将会自动使用默认浏览器打开结果报告页面。如图所示:

12.png

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

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

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

Logo

一站式 AI 云服务平台

更多推荐