使用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/#243iOS-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
呀,这么认真都看到这里啦,帮忙点个推荐支持一下呗,灰常感谢~