乐于分享
好东西不私藏

折腾一下午,终于搞定了!iOS AI自动化测试实战“保姆级”避坑指南(附视频讲解)

折腾一下午,终于搞定了!iOS AI自动化测试实战“保姆级”避坑指南(附视频讲解)

01

写在前面

前两天有同学问我“iOS自动化测试怎么搞?”,说实话我已经很久没搞iOS自动化测试了,上次还是两年前发表过一篇文章《移动测试神器Appium-iOS环境快速搭建&demo项目实战》。倒不是说它不重要,而是折腾环境就会劝退一大波人。要有Mac、装Xcode、下载一堆依赖、开发者账号……

现在AI已经如此发达了,用AI来搞iOS测试也自然不在话下。那有的同学可能会问,“是不是环境就不用那么折腾了?”。嗯……会简单些,但还是要折腾一下。

刚好今天中午喝咖啡睡不着,于是就想着来简单研究一下,结果越研究越睡不着(咖啡的作用…)、越来精神,随后的实现效果也远超出我预期。下面就和大家来详细分享实现思路。

话不多说,先来看看实现效果:

02

一、实现方案概览

先说我的实现方案吧:【CoPaw + 多模态模型】 + 【iOS simulator Skill】 + 【iPhone17 模拟器(Mac电脑)】。

我们挨个拆开来看:

1.CoPaw + 多模态模型

这组说白了就是发动机+燃料。Agent智能体是发动机,至于是阿里CoPaw还是OpenClaw、Hermes都不重要,都可以用。模型的token是燃料,必须是多模态模型,因为涉及到截图识别。国产Kimi2.6就OK。

2.iOS simulator Skill

Skill是是大模型随时可以翻阅的说明文档,相当于指导手册,用来指导AI在什么情况下该干什么、按什么顺序干、用什么格式输出。

iOS simulator Skill这款Skill不是我写的,在https://hub.cocoloop.cn/这个Skills应用商店可以下载到,但是下载过程不太顺利,要折腾一下,我们先把关系和思路捋清楚,剩下的大家跟着我的思路来就行。

3.iPhone17 模拟器

这个不必多说,总要有一个执行机,否则也没办法测试。至于是真机还是模拟器,实际自动化测试过程中并不重要。但因为上述Skill是用的simulator(模拟器),所以这里我们也选用模拟器。后期如果我们写一个通用Skill,那么也可以用真机测试。

03

二、环境搭建

安装CoPaw智能体就不用说了,前面也提到,至于发动机是CoPaw、OpenClaw、Hermes都不重要,Claude Code、Trae也可以。所以这里的搭建和模型配置就不细说了,有这一条件就行。

1.安装iOS simulator Skill

https://hub.cocoloop.cn/这个Skills应用商店,直接就可以搜到iOS simulator Skill。

按照右侧安装提示,需要用cocoloop skill这款Skill管理器来安装。而我在实际安装cocoloop skill技能时,无论是用Claude、还是CoPaw,无论是不开VPN还是开了VPN,都无法解析到https://dl.cocoloop.cn/这个域名。大家也可以先试试,不行再安装下面迂回的方式来安装。

所以这里干脆换个思路,先安装它官方的Molili智能体,下载地址:https://www.molili.com.cn,注册后在「个人中心」中填入我的邀请码:71BB8R,即可获得2000积分奖励。2000积分够用一会儿了。

再用这个智能体输入以下提示词安装SKills。

依次执行以下步骤1. 检查是否安装 cocoloop skill,未安装时,请从 https://dl.cocoloop.cn/cocoloop-main.zip 安装cocoloop skill2. 使用 cocoloop skill ,在Molili(推荐,一键安装)上,从以下 URL 安装 skill https://dl.cocoloop.cn/bss/skills/ios-simulator.zip

根据工具的提示,我们会发现它的工作目录在/Users/xxxx/.molili/workspaces/default目录。

接着我们就可以进入到它所在的工作目录下的Skills目录,将对应的SKill文件夹,也就是cocoloop skill打包成.zip文件,再导入到其他工具使用。

为什么后续没有继续用Molili工具?它这个工具新用户注册送2000积分,安装SKills可以,但是开展测试没一会儿就烧没了,并且不能配置接入第三方模型,所以这里选择把SKills导出来到其他工具使用。

注意:这里我并没有直接打包导入iOS simulator Skill,而是先打包cocoloop skill导入,再调用cocoloop技能安装iOS simulator Skill。是因为cocoloop是一个丰富的SKills应用商店,后续可以通过它来查找安装它的商店下各种SKills,类似于find_skills

2.iOS simulator Skill简介

这里我们先让AI简介这个Skill的用法

介绍ios-simulator skill的用法

📱功能概览

这个 Skill 提供了基于 simctl + idb 的 iOS 模拟器自动化能力:

  • 模拟器生命周期 – 创建、启动、关闭、擦除、删除
  • 应用管理 – 安装、卸载、启动、终止 App
  • UI 自动化 – 基于无障碍树的元素查找、点击、输入文字
  • 截图与录屏 – 快速截图和录制视频
  • 隐私权限 – 授予/撤销通知、定位等权限
  • 推送通知 – 模拟推送通知到设备

📋 主要功能模块

快速试用

# 健康检查node skills/tristanmanchester-ios-simulator/scripts/ios-sim.mjs health# 列出所有模拟器node skills/tristanmanchester-ios-simulator/scripts/ios-sim.mjs list# 选择一个默认模拟器(如 iPhone 16)node skills/tristanmanchester-ios-simulator/scripts/ios-sim.mjs select --name "iPhone" --runtime "iOS" --boot

🔧额外依赖

  • macOS + Xcode Command Line Tools
  • idb (可选,但用于 UI 自动化必须安装):

如果需要 UI 自动化ui tap / ui type 等),需安装 idb

brew tap facebook/fbbrew install idb-companionpython3 -m pip install --upgrade fb-idb

纯 simctl 操作(列表、启动、安装 App、截图等)无需额外依赖,有 Xcode 即可。


从上述它提供的用法简介中,我们可以看出,如果需要UI自动化测试,还需要安装facebook/fb、idb-companion以及fb-idb。

3.UI自动化依赖简介及安装

① 安装Xcode命令行工具

正常情况下,安装Xcode时会自动安装命令行工具。但如果Xcode命令行工具版本过低,也可能会出现后面安装idb报错的情况。按照如下方式可更新安装最新版。

sudo rm -rf /Library/Developer/CommandLineToolssudo xcode-select --install

② 添加facebook/fb软件源

brew tap facebook/fb

tap是 Meta 官方在 Homebrew 上维护的一个第三方软件源(Tap)。这个仓库主要托管了 Meta 内部广泛使用的各种开源命令行工具,旨在帮助开发者更高效地处理代码、构建和系统管理等任务。

在 Homebrew 中,brew tap 命令的作用是添加一个第三方的 Git 仓库(Tap)作为软件源,从而扩展 Homebrew 默认支持的软件包列表。

  • facebook 代表 GitHub 上的组织名(Organization)。
  • fb 代表该组织下的仓库名(Repository)。

③ 安装idb

brew install idb-companion

idb 在 Mac 系统中,用于操作 iOS 设备、类似于安卓 ADB 的 idb 工具,其全称是 iOS Development Bridge(iOS 开发桥)

它是 Facebook 开源的一款命令行工具,专为 iOS 模拟器和真机设备的自动化设计,能够帮助开发者简化测试流程、提高工作效率

④ 安装fb-idb的Python库

python3 -m pip install --upgrade fb-idb

注意要在Python3.12环境下安装,不要在最新的Python3.14下安装,否则会有一堆兼容性问题。

⑤ 安装simulator模拟器和iOS镜像

在 Mac 系统上,Simulator 是 Xcode 自带的,Simulator 应用本身随 Xcode 安装,但不同设备和系统版本的运行时(即 iOS 镜像)需要单独下载。如果没有下载并安装对应的 iOS 镜像(官方称为 Simulator Runtime),模拟器手机是无法启动的。

首次启动 Xcode 时,系统通常会默认下载并安装当前最新版本的 iOS Simulator 运行时。如果你需要测试特定版本的 iOS 或旧版系统,可以在 Xcode 的设置(Preferences/Settings)中进入“Components”或“Platforms”选项卡,手动下载其他版本的 Simulator 运行时

在 Xcode 的顶部菜单栏选择 Window > Devices and Simulators,然后点击上方的 Simulators 标签页,即可直观地看到所有已创建的模拟器列表。

04

三、iOS自动化测试实战

处理完上述的各个依赖后,我们就可以来实际开展自动化测试了。这里用两个真实案例场景,来带着大家实际开展iOS自动化测试实战!

案例一:Safari百度搜索TestHub

使用ios-simulator技能在iPhone17模拟器的Safari浏览器上访问https://www.baidu.com,并搜索TestHub开源测试平台。

其实搞定环境后,剩下的就是用智能体消耗Token,调用专门的Skill,打开模拟器执行测试任务了,没有什么特别难的。当然没有人操作起来那么快,这个是必然的,只要模型稍微好点,提示词够清晰明确,执行下来还是挺顺畅的。

案例二:TestHub官网冒烟测试&H5兼容

如果说百度搜索这种场景已经老掉牙了,下面我就用来演示一个复杂点的场景:TestHub官网的冒烟测试案例。

TestHub官网大家都很熟悉了,https://testhub.aisky.cloud/

每次转测后,我们都要先进行冒烟测试。例如我这里想测试顶部栏几个按钮最基本的跳转情况,顺便也可以看看官网H5兼容性(不兼容的话按钮很可能不可见或无法点击),那么用AI+SKills的方式再合适不过。

使用ios-simulator技能在iPhone17模拟器的Safari浏览器上访问https://testhub.aisky.cloud/,首页顶部几大菜单分别跳转查看一遍,确认可以正常打开

之所以说这是个复杂场景,是因为H5页面上不比在Web浏览器端,H5是看不到顶部栏几个按钮的,只有右上角手动点击汉堡按钮菜单、展开后才能看到和点击。而我的提示词里一开始又没有明确提到这个,所以还是挺有挑战的!(说实话我也是第一次在H5端打开,还是以AI这种方式,哈哈

不过好在AI调整了两三个回合就找到操作路径了。

最终也是不负所托,在我没有明确给出路径的情况,靠着AI+Skill,完成了顶部栏按钮的遍历点击!

并且给出了截图和最终测试结论:

05

写在最后

除了上述方案,其实也可以举一反三其他方案,例如:仿照iOS Simulator Skill,再写一个真机版的Skill用来操作真机,将Appium测试脚本和操作实现路径,沉淀成Appium版Skill等等。

看到经常有同学经在群里问:有没有AI自动化测试落地方案、能不能用AI开展接口测试?其实之前公众号也写了很多了这方面的Skills。

不管是SKills还是测试平台、亦或是上述的实战案例,重点都是提供实现思路、以及通用能力,重点是要干起来才行!

技术在于折腾,实践是检验真理的唯一标准!