airtestIDE连接iOS真机

上期回顾: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设置TeamProduct Bundle Identifier
注意如果2个TARGETS的Team上边的选项Automatically manage signing如果没有勾选,则选中

3.设置代理并连接
在Xcode里product -> Test成功后,在命令行输入iproxy 8100 8100,就可以去airtestIDE里连接了。

---------------------------------------------------------------------------------

关注微信公众号即可在手机上查阅,并可接收更多测试分享~

原文地址:https://www.cnblogs.com/songzhenhua/p/14773350.html