使用Airtest对iOS进行自动化的常见问题答疑


1. 前言

同学们在对iOS真机进行自动化测试的时候,经常提出一些连接问题、版本支持问题等,这里我们整理出一些iOS常见的问题答疑,希望能给大家带来一些排查思路。

2. 版本支持说明

要实现对iOS设备进行自动化测试,我们需要在iOS真机上起一个 WebDriverAgent 服务,可以是Airtest的 iOS-tagent,也可以是Appium的 WebDriverAgent

iOS-tagent 的支持情况如下:

iOS-Tagent 最低支持 最高支持
iOS系统 9.3 13.5
xcode版本 9.9 12.1

特别是对于低版本的iOS,我们更建议使用Airtest的 iOS-tagent

如果有高版本iOS测试需求的同学,我们更建议大家使用Appium的 WebDriverAgent ,对高版本iOS的兼容性会好很多。(但响应速度可能很慢)

3. 常见问题答疑

1)AirtestIDE是否支持M1

支持的;目前我们并未发现AirtestIDE在M1上有什么问题,如有异常,同学们可以通过快速提单渠道,告知我们具体的报错情况:

快速提单页面:https://airtest.netease.com/issue_create

2)是否能脱离AirtestIDE对iOS进行自动化测试

可以脱离AirtestIDE对iOS进行自动化测试;同学们可以使用命令行或者其他编辑器如pycharm等运行iOS的自动化脚本。

但需要注意,脱离AirtestIDE对iOS进行自动化测试时,需自行补充连接iOS相关的命令/脚本:

# 命令行连接iOS设备
airtest run test.air --device iOS:///http://127.0.0.1:8100

# 脚本连接iOS
auto_setup(__file__,devices=["iOS:///http://127.0.0.1:8100"])
connect_device("iOS:///http://127.0.0.1:8100")
init_device(platform="IOS",uuid="http://127.0.0.1:8100")
3)iOS Poco的初始化问题

iOS Poco的初始化,必须放在iOS设备连接脚本之后,否则运行脚本是会出现如下提示:

“please call connect_device to connect an ios device first”

正确的脚本顺序可以参照示例:

# -*- encoding=utf8 -*-
__author__ = "AirtestProject"

from airtest.core.api import *
from airtest.report.report import simple_report,LogToHtml

auto_setup(__file__,devices=["iOS:///http://127.0.0.1:8100"])

sleep(2.0)

from poco.drivers.ios import iosPoco
poco = iosPoco()
4)是否能脱离Mac对iOS进行自动化测试

可以;在iOS设备上成功部署好 iOS-tagent 或是 WebDriverAgent 之后,我们即可利用开源的工具 tidevice 脱离Mac测试iOS设备。

使用 tidevice 工具连接iOS设备的教程,可以参考我们的往期推文:脱离Mac搞iOS自动化,tidevice工具教你轻松实现! 。

5)端口映射后查看inspector显示unknown command

高版本的iOS已经不支持查看inspector的命令了,所以同学们可能会遇到如下情况:

  • 访问 http://127.0.0.1:8100/status 显示success
  • 访问 http://127.0.0.1:8100/inspector 显示unknown command

此时无需惊慌,以status的情况为准即可,http://127.0.0.1:8100/status 可以访问成功并且可以看到一些json格式的手机信息,即表示启动成功;就可以到IDE去连接我们的iOS设备啦。

6)查看status成功,但在IDE点击connect无反应

也有很多同学遇到查看status是成功的,但是在IDE点击connect连接iOS设备时却没有反应,此时我们可以排查如下的问题:

  • 填入的iOS字符串是否正确
  • 是否使用了版本合适的 WebDriverAgent (低版本使用iOS-tagent,高版本使用Appium的WebDriverAgent,详细支持情况参考上文)

如以上都确定无误,我们还可以关闭当前的IDE,然后用命令行打开AirtestIDE,此时就可以看到一个log终端,在点击connect之后,可以到这个log终端里查看详细的报错信息:

# 在Mac上命令行启动AirtestIDE
$ cd /Applications/AirtestIDE.app/Contents/MacOS
$ ./AirtestIDE

根据详细的报错信息再来进一步排查问题。

7)其余常见问题

我们的项目上还整理了一些其它的关于iOS的常见问题:

  • Xcode版本和iOS版本对应问题
  • 开发者证书的常见问题
  • Xcode failed to create provisioning profile
  • 初次安装信任设备的问题
  • 个人免费证书签注设备数超限
  • 未能载入软件包
  • 未同意苹果协议
  • Mac网络波动或不稳定
  • ......

同学们可以到这里查看:https://github.com/AirtestProject/iOS-Tagent/blob/master/Introduction/question_zh.md# 。

8)附:iOS部署教程
  • iOS-tagent 部署教程:https://airtest.doc.io.netease.com/IDEdocs/device_connection/4_ios_connection/#243
  • iOS-tagent 部署视频教程:https://www.bilibili.com/video/BV1qf4y1h7o1/
  • Appium 的 WebDriverAgent 安装教程:https://testerhome.com/topics/7220
  • Appium 的 WebDriverAgent疑难解决:https://github.com/appium/WebDriverAgent/issues

4. 小结

关于对iOS进行自动化测试的常见问题,今天就整理到这里啦,如果同学们还有其它关于iOS的问题未解决,可以到这里提单给我们的开发者:https://airtest.netease.com/issue_create 。


Airtest官网:https://airtest.netease.com/
Airtest教程官网:https://airtest.doc.io.netease.com/
搭建企业私有云服务:https://airlab.163.com/b2b

官方答疑 Q 群:654700783

呀,这么认真都看到这里啦,帮忙点个推荐支持一下呗,灰常感谢~