2.4 iOS设备连接

../_images/ios-airtestIDE.gif

iOS-Tagent 是基于 facebook 的 WebDriverAgent , 项目上进行开发的 , 目的是为了对 AirtestProject. 提供iOS平台的测试支持,在原项目的基础上进行了定制化的优化和功能调整。

如果需要使用airtest项目对iOS平台进行测试,请 事先准备一台macOS ,使用xcode部署 iOS-Tagent 成功后,能够在mac或windows机器上连接到iOS手机。请点击 链接 下载项目代码到本地进行部署。

这个项目基于 Xcode9 + iOS 11 平台进行开发和测试,目前已支持到iOS12,其他版本的xcode和iOS未经完整测试,可能会出现非预期的错误情况。

现在这个项目在公开测试状态,会存在一些问题
如果对于这个项目有问题和反馈建议,可以到 Issues 里进行提出。

1. Airtest Api 支持状况

这个项目被设计可以 与 AirtestIDEairtest项目 协同工作

通用的 airtest 的 iOS Api 都是支持的

  • 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

除了一些例外:

  • wake: 暂未支持 (考虑用’home’方法替代)
  • keyevent: 只支持 ‘home’ 事件
  • clear_app: 暂未支持
  • install: 暂未支持
  • uninstall: 暂未支持

2. 使用Poco快速查看窗口视图

现在已经支持Poco查看窗口视图功能,可以看下面图片的效果

../_images/ios-inspector.gif

这个功能可以与 Poco 和 airtest-ide 一同使用达到最好的效果。

请注意,若只部署了wda项目,是无法使用本功能的,请务必确保部署的是我们提供的 iOS-Tagent 项目。

3. 简单部署流程

前置要求

1. 需要 有一台mac电脑
2. 需要iOS的 开发者证书,付费或免费的均可
3. 需要了解xcode的基础操作和用法

流程简述

下载 iOS-Tagent 项目代码后,用xcode 打开工程 WebDriverAgent.xcodeproj ,并且使用 test 模式在设备上启动 WebDriverAgentRunner 即可。

之后使用iOS对应的url链接,在AirtestIDE里可以连上手机(甚至也可以使用windows电脑来连接到ios手机),接下来就像安卓手机那样,在AirtestIDE里能对iOS手机进行画面查看,并能够使用airtest与poco进行测试。

以下是部署教程的细节流程。

4. 详细部署教程

首先,下载 iOS-Tagent 项目代码后,用xcode 打开工程 WebDriverAgent.xcodeproj

4.1 设置开发者证书

可以通过 WebDriverAgent -> WebDriverAgent-Runner-> General -> signing 选择自己的开发者证书.

../_images/signing.png

如果使用了免费的开发者证书,可能会出现例如 Xcode failed to create provisioning profile 这样的错误:

../_images/FailID.png

可以通过修改 ‘Build Settings’ ->”Product Bundle Identifier” , 将Product Bundle Identifier修改成xcode可以接受的名字即可,如(‘com.xxx.webDriverAgent-test123’)

../_images/bundleId.png

4.2 在选定设备上启动项目

首先选择需要启动的设备

../_images/chooseDevice.png

选择启动的Scheme,选择WebDriverAgentRunner

../_images/chooseScheme.png

最后,选择Product->Test 启动项目

../_images/runTest.png

点击启动或从菜单里选择启动

../_images/ProductTest.jpg

第一次安装的时候,你需要信任应用程序才可以进行启动,可以选择 Settings => General => Device Management on the device,对应用程序进行信任,才可以继续运行(可以查看 Apple documentation for more information ).

之后重新启动’test’即可,会黑屏一下接着返回。

../_images/untrustedDev.png

4.3 项目启动成功

最后,当你看到这样的日志的时候代表项目已经启动成功了

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

可以从以下了解更多的关于如何成功启动这个项目的方法 here. and another

4.4 设置代理

一般情况下,需要通过设置usb代理的方式访问手机上的Agent,直接通过wifi对手机进行访问可能会出现问题。(具体的原因可以参考 Issuesdetail

可以使用 iproxy

$ brew install libimobiledevice
$ iproxy 8100 8100

| 启动成功后,可以在mac电脑的xcode上试着访问 http://127.0.0.1:8100/status
| 如果访问成功并且可以看到一些json格式的手机信息,即表示启动成功。

如果一切正常但是最后在AirtestIDE上手机连接失败,可能是潜在的权限问题导致的,可以尝试用命令行启动IDE之后再进行手机连接:

~ cd /Applications/AirtestIDE.app/Contents/MacOS
./AirtestIDE

注:由于 iproxy 不支持远程连接,如果有远程连接到这台mac上的ios手机设备的需求(比如想要从另外一台同一局域网的windows机器上的AirtestIDE连接ios手机),可以考虑安装 wdaproxy ,使用方法与 iproxy 基本类似(但请注意不要部署wda,还是使用我们提供的 ios-Tagent 即可):

$ brew install openatx/tap/wdaproxy
$ wdaproxy -p 8100 -u $UDID

成功后即可在同一局域网中的其他电脑上,通过类似这样 http://mac电脑ip地址:8100 的地址访问到刚才部署成功的ios手机了。若访问失败,请首先考虑排除网络问题的影响,确认两台电脑之间IP可以ping通。

4.5 在AirtestIDE中连接手机

接下来可以通过这样的URL来连接到ios手机 http://127.0.0.1:8100,请将对应的URL填入AirtestIDE的ios连接里,并点击Connect按钮进行连接。

6. License

这个项目基于 WebDriverAgent 进行了定制化的开发和优化,请部署我们的 iOS-Tagent 项目才能使用Poco的相关功能。

WebDriverAgent is BSD-licensed . We also provide an additional patent grant.

Have fun with Airtest!