# 1.3 在iOS设备上进行测试 **本文约1100字,阅读全文可能将花费4分钟**。 ## 1. 概要 当我们第一次使用AirtestIDE进行iOS测试的时候,会觉得有些无所适从,该从那里开始进行测试呢? 本文为大家介绍一下,如何从不了解AirtestIDE,到入门使用AirtestIDE进行iOS测试,本文讲分以下几个方面进行介绍: * 关于iOS自动化测试 * 部署iOS-Tagent * 连接iOS设备 * 使用Airtest图像识别方式进行录制和运行脚本 * 使用Poco方式对进行录制和运行脚本 * 一些其他的问题 ## 2. 关于iOS自动化测试 针对iOS的自动化测试方案有几个常见的方案,最常见也是苹果官方推荐的一种是直接在xcode项目中编写测试代码,用xcode进行测试,随之而来的问题是测试代码和项目的代码的耦合度比较高,比较复杂。 Airtest Project提供了一种新的思路,使用python作为脚本语言,基于可视化的方式进行自动化脚本编写。并使用了优化后的WebdriverAgent([iOS-Tagent](https://github.com/AirtestProject/IOS-Tagent))作为运行时设备控制的底层框架,其极大的优化了执行效率,使得iOS自动化测试达到了前所未有的简单和便捷。 ## 3. 部署iOS-Tagent 在执行iOS测试的第一步是要部署iOS-Tagent,具体的部署教程可以参见[github链接](https://github.com/AirtestProject/IOS-Tagent)或者[AirtestIDE官方文档](../2_device_connection/4_ios_connection.html) 遵循部署教程的步骤,当你看到这样的日志的时候代表项目已经启动成功了: ``` 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 ``` 一般情况下,需要通过设置usb代理的方式访问手机上的Agent,直接通过wifi对手机进行访问可能会出现问题,具体的原因可以参考 [Issues](https://github.com/facebook/WebDriverAgent/wiki/Common-Issues) 和 [detail](https://github.com/facebook/WebDriverAgent/issues/288) ``` 可以使用 iproxy $ brew install libimobiledevice $ iproxy 8100 8100 | 启动成功后,可以试着访问http://127.0.0.1:8100/status | 如果访问成功并且可以看到一些json格式的手机信息,即表示启动成功。 ``` ## 4. 连接iOS设备 在完成以上的步骤之后就可以开始使用AirtestIDE进行设备的连接了,简单来说,连接iOS设备只需要二个步骤: * 打开AirtestIDE * 输入url,点击连接 在部署了iOS-Tagent之后,我们打开AirtestIDE,找到iOS连接这个窗口 ![](3_get_started_with_iOS_test/1_iOS_connection_panel.png) 点击连接,即可连接上设备 ![](3_get_started_with_iOS_test/2_iOS_connected.png) ## 5. 录制和运行Airtest图像脚本 使用Airtest图像识别的方式进行录制是通过图像识别的方式,对操作进行记录和回放,常见的几个操作包括,点击滑动等。 下面介绍使用Airtest识别方式进行以下操作 * 选择计算器图标进行点击 * 脚本回放 使用touch操作,先选择touch 按钮 ![](3_get_started_with_iOS_test/3_touch_image.png) 框选屏幕中的需要点选的按钮 ![](3_get_started_with_iOS_test/4_select_target_image.png) 之后可以对操作进行回放 ![](3_get_started_with_iOS_test/5_record_airtest_script.gif) 关于自动录制可以[参考这里](../3_record_script/1_airtest_record.html#id7) ## 6. 录制和运行Poco脚本 使用Poco进行脚本的录制和运行的时候,可以准确地定位到当前画面上的元素在实际UI结构树中的位置,这样可以更加精确的确定元素的位置和信息,来更好的进行录制。 下面将介绍iOS如何使用Poco进行录制和运行 下面介绍使用Poco方式进行以下操作 * 开启poco选择元件 * 展示一个打开计算器并进行简单计算的脚本回放过程 在poco窗口,选择iOS即可开启Poco。 ![](3_get_started_with_iOS_test/6_poco_mode.png) poco的具体使用操作可以[查看这里](../3_record_script/2_poco_assistant.html) 下面介绍使用Poco进行录制和回放,通过选中元素,使用poco进行录制,之后进行回放 ![](3_get_started_with_iOS_test/7_run_poco_script.gif) ## 7. 一些其他问题 **Q1. iOS 是否支持同时连接多态设备?** * 支持的,可以使用[set_current方法](http://airtest.readthedocs.io/zh_CN/latest/all_module/airtest.core.api.html#airtest.core.api.set_current)来切换当前操作设备 **Q2. 出现连接失败情况怎么办?** * 可以查看[iOS-Tagent的github仓库](https://github.com/AirtestProject/iOS-Tagent)了解更多信息 **Q3. 是否支持测试游戏?** * 支持的,可以查看[poco页面](../3_record_script/2_poco_assistant.html)了解更多信息