上期回顾:airtestIDE连接模拟器及常见问题
以下基于
python3.8;airtestIDE1.2.9;airtest1.1.10;pocoui1.0.82
xcode12.4;iOS14.4
前言
先说一句,想做好iOS的自动化,必备一台MAC。虽然现在阿里开源的tidevice后期可以脱离MAC,但一些前期的步骤还是需要MAC,你不可能随时随地借开发的MAC本调试吧。
WebDriverAgent是由Facebook开发的一套开源框架,用于端对端的UI测试,能同时支持模拟器和真机。
airtestIDE的iOS-Tagent是基于 facebook 的 WebDriverAgent进行开发的,提供iOS平台的测试支持,在原项目的基础上进行了定制化的优化和功能调整。
airtest截止2021.4.1支持到最新的iOS、Xcode。如果将来你看到本篇文章,也许那时候版本会出现不匹配的问题,也没关系,等airtest官方更新即可。
Airtest连接iOS真机测试
(一)iOS-Tagent
使用iOS-Tagent在手机上创建一个WebDriver服务器,可用于远程控制iOS设备,定位UI元素。
1.下载 iOS-Tagent 到本地电脑
git clone git@github.com:AirtestProject/iOS-Tagent.git
2.使用Xcode打开 iOS-Tagent, 用数据线连接iPhone至Mac
连接iPhone后,在iPhone设备上弹出的“是否信任Mac设备”,选择信任
选择项目,在菜单栏 product -> Scheme -> WebDriverAgentRunner
选择设备,在菜单栏 product -> Destination -> 选择你的真机
3.使用苹果账号或苹果开发者账号,登录Xcode,并注册真机设备
(1) 左侧导航栏,选择 WebDriverAgentRunner -> TARGETS -> WebDriverAgentRunner -> Signing & Capabilities -> Team
(2) 选择 Team -> Add an Account -> 登录苹果账号(个人免费或开发者账号)
(3) 选择 TARGETS -> WebDriverAgentRunner -> Build Settings -> Basic
(4) 双击 Product Bundle Identifier值,填写一个属于自己独一无二的字串
(5) 回到上文提过的Signing & Capabilities界面,查看有无报错
无报错,则继续;若有报错,查看常见问题:
https://github.com/AirtestProject/iOS-Tagent/blob/master/Introduction/question_zh.md
4.启动Test,在菜单栏 product -> Test。xcode会编译WebDriverAgent并安装到手机上。当你看到这样的日志的时候,代表 iOS-Tagent 已经启动成功了
Test Suite 'All tests' started at 2017-01-23 15:49:12.585 Test Suite 'WebDriverAgentRunner.xctest' started at 2017-01-23 15:49:12.586 Test Suite 'UITestingUITests' started at 2017-01-23 15:49:12.587 Test Case '-[UITestingUITests testRunner]' started. t = 0.00s Start Test at 2017-01-23 15:49:12.588 t = 0.00s Set Up
过程中,Xcode可能会请求密码权限或其他权限 —> 全部允许 —> 不要拒绝,拒绝可能会带来奇妙的异常。
以防万一,再手动去苹果手机的设置—>通用—>描述文件与设备管理—>找到WebDriverAgentRunner,如果没有信任,点击信任
(二)设置代理
1.iproxy是usbmuxd附带的一个小工具,它的作用是将设备的某个端口映射到电脑的某个端口。安装命令:
brew install libimobiledevice --HEAD
2.运行iproxy
$ iproxy 8100 8100
上面这条命令的意思就是将手机的8100端口,映射到电脑的8100端口上。这样我们就能通过访问电脑的8100端口来访问到手机了。
从图中可以看到,当有访问端口时,会有相应日志打印出来。
启动成功后,可以试着在浏览器访问 http://127.0.0.1:8100/status ,如果访问成功并且可以看到一些json格式的手机信息,即表示启动成功。此时,访问 http://127.0.0.1:8100/inspector 可以看到iPhone屏幕投影在浏览器上。
(三)airtestIDE连接iphone
在AirtestIDE的iOS地址栏填入地址 http://127.0.0.1:8100 ,点击 “connect” 连接设备,可以看到airtestIDE连上iphone并能看见&操作其屏幕了。
在airtestIDE左下的‘poco辅助窗’选择‘iOS’,可以看到iphone上的元素控件,可以使用poco框架编写自动化。
如果要使用iOS的Unity Poco的话,还要另外映射一个端口:
$ iproxy 5001 5001
之前的8100端口用于连接iOS手机,这里的5001端口用于连接poco-sdk的rpc端口。
开完2个端口映射,并在airtestIDE里连上iphone后,进入游戏(需要事先接入Poco SDK),在‘poco辅助窗’选择‘Unity’,就可以看到游戏的元素控件了。
(四)使用Appium的WebDriverAgent连接真机
上面介绍了用airtest的iOS-Tagent连接真机,但因为airtest官方更新较慢,如果遇到版本不匹配的问题,现在也支持使用Appium的WebDriverAgent连接真机。Appium的WebDriverAgent也是基于facebook的WebDriverAgent开发的,其更新速度很快。
Appium的WebDriverAgent搭建过程与iOS-Tagent非常相似,只不过Xcode中要设置两个TARGETS:WebDriverAgentLib、WebDriverAgentRunner
1.下载源码
git clone https://github.com/appium/WebDriverAgent
2.使用Xcode打开工程
同iOS-Tagent第3步的设置,分别给WebDriverAgentLib、WebDriverAgentRunner设置Team
和Product Bundle Identifier
。
注意如果2个TARGETS的Team上边的选项Automatically manage signing
如果没有勾选,则选中
3.设置代理并连接
在Xcode里product -> Test成功后,在命令行输入iproxy 8100 8100
,就可以去airtestIDE里连接了。
---------------------------------------------------------------------------------
关注微信公众号即可在手机上查阅,并可接收更多测试分享~