Airtest支持iOS自动化测试,在Mac上为iOS手机部署iOS-Tagent之后,就可以使用AirtestIDE连接设备,像连接安卓设备一样,实时投影、控制手机。iOS测试不仅限于真机测试,iOS模拟器也可以进行。Mac端上部署完成后还可以提供给同一局域网内的windows上远程连接使用。同时支持airtest图像识别和pocoUI检索。
本文介绍iOS自动化测试的部署过程,提供一个简单的测试脚本,列举了iOS测试过程中常见的问题。
功能支持
支持AirtestIDE连接,实时控制iPhone
支持基本操作如启动app、点击、滑动、输入、截图等等操作
支持控件检索技术Poco和图像识别
自动化脚本录制、一键回放、报告查看等基本功能
支持真机或者模拟器
安装部署
版本需求:
MacXcode≥9.3
iPhoneiOS≥9.3
在9.3≤iOS≤10时,由于基于旧版xcodeSDK,建议使用Xcode版本≤10.1来启动iOS-Tagent,否则会出现手机截屏不全的问题。
部署流程
1、在Mac下载iOS-Tagent,使用Xcode启动Test,具体启动过程可参考https://github.com/AirtestProject/iOS-Tagent。当Xcode的log窗口输出下图信息的时候,就意味着部署成功了。
2、启动代理,在命令行下执行iproxy81008100运行代理后,可以在浏览器打开http://127.0.0.1:8100/inspector,查看iOS设备是否能成功连接。
iproxy是usbmuxd附带的一个小工具,它的作用是将设备的某个端口映射到电脑的某个端口。mac下可以通过brew安装brewinstallusbmuxd。
iproxy81008100意思就是将手机的8100端口,映射到电脑的8100端口上。这样我们就能通过访问电脑的8100端口来访问到手机了。
3、在AirtestIDE的设备窗口,输入地址:http://127.0.0.1:8100或http://x.x.x.x(MACIP):8100:
点击Connect按钮即可连接iOS设备,如图:
image
支持Xcode中的iOS模拟器
Xcode中的iOSSimulator模拟器部署过程和真机一样,但是可以省略步骤2,不需要另外执行proxy。
当Xcode的log窗口看到下面内容的时候,就可以直接用地址http://x.x.x.x:8100进行连接了,也就是log里显示出来的ServerURLHere中的地址:
WebDriverAgentRunner-Runner[xxx:xxx]ServerURLHere->http://x.x.x.x:8100<-ServerURLHere
支持Windows连接
我们同样能够在Windows上连接一个远程的iOS设备,但是依然需要有Mac电脑与Xcode环境。首先按照上文的部署教程在Mac上启动iOS-Tagent之后,不再使用iproxy启动代理,而是改用wdaproxy。因为iproxy只支持本机端口的映射,而wdaproxy能够支持远程IP映射,这意味着可以在第二部PC上,通过访问ip的方式访问到Mac电脑上连接的iOS设备。
通过brewinstallopenatx/tap/wdaproxy安装好wdaproxy
使用方法与iproxy一致,wdaproxy81008100,或者不填写端口也可以,默认将会使用8100:
开始测试
iOS的测试和其他设备差不多,支持图像识别和UI检索,下面简单介绍一个iOS测试例子:
连接设备
点击home键
截屏
执行滑动操作
使用poco点击appSafari
使用poco点击浏览器的搜索框,获取焦点
在搜索框输入“airtest”
在搜索页面往下滑动
判断是否存在airtest官网地址
fromairtest.core.apiimport* frompoco.drivers.iosimportiosPoco poco=iosPoco() auto_setup(__file__) connect_device("ios:///x.x.x.x:8100") keyevent("HOME") snapshot() swipe(Template(r"tpl1561985939879.png",record_pos=(0.356,-0.174),resolution=(750.0,1334.0)),vector=[-0.685,0.0481]) poco("Safari").click() poco("URL").click() text("airtest") poco("Peoplealsosearchfor").swipe([-0.0541,-0.4206]) exists(Template(r"tpl1560844284543.png",record_pos=(-0.292,0.688),resolution=(750,1334)))
常见问题
1、如何在模拟器安装应用
把xx.ipa改成xx.zip,解压得到xx.app
打开模拟器,在终端运行xcrunsimctlinstallbootedxx.app
tips:不可以把真机app包安装在iOS模拟器上,真机的app是基于arm的,而模拟器是运行在X86指令集上的,强行安装会导致闪退的问题。
2、如何进行iOS多机测试
目前暂未开放iOS多机测试功能,敬请期待
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:暂未支持
作者:AirtestProject
原文链接:https://www.cnblogs.com/AirtestProject/p/12107170.html