ios-simulator

📱 iOS 模拟器自动化测试专家

基于 simctl 与 idb 的 iOS 模拟器自动化工具,支持 UI 测试与应用部署,提升开发和 CI/CD 测试效率。

收藏
9.1k
安装
2.6k
版本
v0.1.2
CLS 安全性认证2026-05-19
点击查看完整报告 >

使用说明

核心用法

iOS Simulator Automation 是一个基于 Node.js 的命令行工具,为 AI 代理和开发者提供了对 iOS 模拟器的全面自动化控制能力。该工具封装了 Apple 官方的 simctl 命令行工具以及 Facebook 的 idb(iOS Debug Bridge),实现了从设备生命周期管理到应用部署、从 UI 自动化测试到系统级操作的全套功能。通过结构化的 JSON 输出和极简的 CLI 接口,用户可以轻松完成模拟器创建、启动、应用安装、权限管理、截图录屏以及基于可访问性树的 UI 交互(如点击、输入文本)等操作。工具采用状态文件机制(.ios-sim-state.json)管理默认设备,支持远程 macOS 节点执行,并提供了 --pretty--text 等输出格式选项,兼顾机器可读性和人工调试需求。

显著优点

该技能最突出的优势在于其零第三方依赖的设计理念,仅使用 Node.js 内置模块,极大地降低了供应链攻击风险和依赖维护负担。安全性设计方面,工具实施了严格的分级保护机制:将命令划分为 SAFE、CAUTION 和 DANGEROUS 三个等级,其中数据擦除(erase)和设备删除(delete)等高危操作强制要求 --yes 参数确认,有效防止误操作。输入验证机制完善,对 UUID 和 Bundle ID 等关键参数进行正则表达式校验,防止注入攻击。此外,工具针对 AI 代理场景优化了输出格式,默认提供 token-efficient 的单行 JSON 输出,同时支持通过环境变量灵活配置状态文件路径,非常适合集成到 CI/CD 流水线或自动化测试框架中。

潜在缺点与局限性

首要限制是平台强绑定:该工具必须在 macOS 上运行,且需要安装 Xcode Command Line Tools(或完整 Xcode),这限制了其在 Linux 或 Windows 环境以及云服务器(非 macOS)上的直接使用,虽然支持远程节点执行,但增加了架构复杂度。其次,虽然 idb 提供了强大的 UI 自动化能力,但其安装过程涉及 Homebrew 和 Python pip 多步骤配置,对新手不够友好。来源可信度方面,该技能来自 T3 级社区账号(clawdbot),虽代码质量达到 A 级标准,但相比顶级技术公司或开源基金会维护的工具,其长期维护稳定性和安全审计透明度略逊一筹。

适合的目标群体

该技能主要面向三类用户:一是iOS 开发者,需要频繁在模拟器上测试应用、调试 UI 或验证不同 iOS 版本兼容性;二是测试工程师和 QA 团队,构建自动化测试套件,特别是需要进行端到端的 UI 自动化测试;三是DevOps 工程师,在 CI/CD 流水线中集成 iOS 构建和测试环节,实现自动化部署和验证。对于使用 AI 代理(Agent)进行软件开发的用户,该工具提供了结构化的接口,非常适合集成到自动化工作流中。

使用风险

使用本技能需关注以下风险:首先是数据丢失风险erasedelete 命令会永久清除模拟器数据或删除设备,虽然需要 --yes 确认,但在自动化脚本中若配置不当仍可能导致数据丢失。其次是环境依赖风险,工具强依赖 Xcode 版本,若 Xcode 升级后 simctl 行为变化或路径变更,可能导致工具失效。性能方面,同时运行多个模拟器或执行复杂的 UI 自动化可能消耗大量系统资源。此外,由于模拟器与真实设备存在差异,基于模拟器的测试结果可能无法完全代表真机表现,需谨慎评估测试覆盖率。

安全解读

核心用法

该 Skill 为 Node.js 单文件 CLI 工具,专为 AI Agent 设计,提供 token 高效的 JSON 输出格式。核心能力分为三层:

1. 设备生命周期管理:通过 xcrun simctl 实现模拟器创建、启动、关机、抹除、删除等操作,支持 UDID 状态持久化(.ios-sim-state.json
2. 应用管理:安装/卸载/启动/终止 App,访问沙盒容器,处理剪贴板与 URL Scheme

3. 无障碍 UI 自动化:基于 idb 的 accessibility tree 实现语义化点击(ui tap --query)、文本输入(ui type)、按钮触发(ui button)及 UI 结构探查

命令风格统一为 node ios-sim.mjs <command> [subcommand] [flags],默认输出单行 JSON,可通过 --pretty 美化或 --text 获取人类可读摘要。

显著优点

  • 零依赖攻击面:纯 Node.js 内置模块(child_process/fs/os/path),无 npm 供应链风险
  • 平台原生集成:直接调用系统标准工具链(Xcode simctl + Facebook idb),非侵入式实现
  • AI 友好设计:结构化 JSON 输出、状态文件机制、明确的错误码,适合程序化调用
  • 安全分层:SAFE/CAUTION/DANGEROUS 三级命令分类,抹除/删除等破坏性操作需 --yes 显式确认

潜在局限

  • macOS 独占:必须运行于 macOS 物理机或远程节点,无法跨平台
  • 外部工具依赖:需预装 Xcode CLI Tools(~7GB)及可选 idb(Python 环境),首次配置门槛较高
  • idb 成熟度:Facebook 的 idb 虽功能强大,但社区活跃度与文档完善度不及官方 XCTest,版本兼容性需自行验证
  • UI 自动化限制:基于 accessibility label 的查询依赖开发者正确设置无障碍属性,动态渲染内容(如 SwiftUI List)可能存在识别延迟

适合人群

  • iOS 开发者/测试工程师:需要自动化模拟器工作流、批量截图、回归测试
  • CI/CD 维护者:在 macOS runner 上搭建 iOS 持续集成流水线
  • AI Agent 开发者:构建能操作 iOS 应用的自主代理(如自动化探索测试、App Store 审核辅助)

常规风险

  • 状态文件冲突:多进程同时操作同一工作目录的状态文件可能导致 UDID 竞争
  • 模拟器资源占用:长时间录屏(record-video)或高频 UI 操作可能耗尽内存/磁盘
  • 隐私服务残留privacy grant 修改的权限设置可能跨会话持久化,影响后续测试的纯净度
  • 远程节点延迟:通过 ClawdBot 节点转发执行时,截图/录屏等大文件传输需考虑网络带宽

ios-simulator 内容

references文件夹
scripts文件夹
手动下载zip · 13.8 kB
TROUBLESHOOTING.mdtext/markdown
请选择文件