Airtest自动化测试

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  如图
 
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

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

 
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

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

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

具体详情 可以参考 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
链接:https://www.jianshu.com/p/cd61f4dcd307

posted @ 2022-03-02 10:39  笨手笨脚  阅读(346)  评论(0编辑  收藏  举报