mcpField
I
ios-simulator-skill

ios-simulator-skill

github.com/ovachiever测试与质量5655 次安装48 周前更新
代码仓库

关于 ios-simulator-skill

面向 iOS 开发与测试的自动化技能,通过辅助功能元素而非屏幕坐标导航和操作模拟器。包含构建、交互、测试、权限及设备生命周期管理脚本,并支持 JSON 输出。

主要功能

  1. 01按文本、类型或 ID 定位界面元素
  2. 02构建项目并运行测试
  3. 03执行手势和文本输入
  4. 04进行辅助功能审计与截图比较
  5. 05管理应用权限和推送通知
  6. 06批量管理模拟器生命周期

适用场景

  1. 01自动化 iOS 应用界面测试
  2. 02验证辅助功能和视觉变化
  3. 03测试权限、剪贴板与通知流程
  4. 04在 CI/CD 中管理模拟器

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ovachiever/droid-tings --skill ios-simulator-skill

安装后在 Claude Code 中输入/ios-simulator-skill确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

scripts/
accessibility_audit.py
app_launcher.py
app_state_capture.py
build_and_test.py
clipboard.py
gesture.py
keyboard.py
log_monitor.py
navigator.py
privacy_manager.py
push_notification.py
screen_mapper.py
sim_health_check.sh
sim_list.py
simctl_boot.py
simctl_create.py
simctl_delete.py
simctl_erase.py
simctl_shutdown.py
simulator_selector.py
status_bar.py
test_recorder.py
visual_diff.py
scripts/common/
__init__.py
cache_utils.py
device_utils.py
idb_utils.py
screenshot_utils.py
scripts/xcode/
__init__.py
builder.py

详细介绍

iOS 模拟器技能

使用无障碍驱动的导航和结构化数据,而不是像素坐标,来构建、测试和自动化 iOS 应用。

快速开始

# 1. Check environment
bash scripts/sim_health_check.sh

# 2. Launch app
python scripts/app_launcher.py --launch com.example.app

# 3. Map screen to see elements
python scripts/screen_mapper.py

# 4. Tap button
python scripts/navigator.py --find-text "Login" --tap

# 5. Enter text
python scripts/navigator.py --find-type TextField --enter-text "[email protected]"

所有脚本都支持 --help,以查看详细选项;也支持 --json,以输出机器可读的数据。

21 个生产级脚本

构建与开发(2 个脚本)
  1. build_and_test.py - 构建 Xcode 项目、运行测试,并通过渐进式披露解析结果

    • 构建时实时流式输出结果
    • 从 xcresult 包中解析错误和警告
    • 按需检索详细构建日志
    • 选项:--project、--scheme、--clean、--test、--verbose、--json
  2. log_monitor.py - 实时监控日志并进行智能筛选

    • 流式输出日志,或按时长捕获日志
    • 按严重程度筛选(错误/警告/信息/调试)
    • 对重复消息去重
    • 选项:--app、--severity、--follow、--duration、--output、--json
导航与交互(5 个脚本)
  1. screen_mapper.py - 分析当前屏幕并列出交互元素

    • 按元素类型分类
    • 列出可交互按钮
    • 显示文本字段状态
    • 选项:--verbose、--hints、--json
  2. navigator.py - 通过语义查找并与元素交互

    • 按文本查找(模糊匹配)
    • 按元素类型查找
    • 按无障碍 ID 查找
    • 输入文本或轻点元素
    • 选项:--find-text、--find-type、--find-id、--tap、--enter-text、--json
  3. gesture.py - 执行轻扫、滚动、捏合和复杂手势

    • 定向轻扫(上/下/左/右)
    • 多次轻扫以滚动
    • 捏合缩放
    • 长按
    • 下拉刷新
    • 选项:--swipe、--scroll、--pinch、--long-press、--refresh、--json
  4. keyboard.py - 文本输入和硬件按钮控制

    • 输入文本(快速或慢速)
    • 特殊按键(回车、删除、制表、空格、方向键)
    • 硬件按钮(主屏幕、锁定、音量、截屏)
    • 按键组合
    • 选项:--type、--key、--button、--slow、--clear、--dismiss、--json
  5. app_launcher.py - 管理应用生命周期

    • 按 bundle ID 启动应用
    • 终止应用
    • 从 .app 包安装/卸载应用
    • 深度链接导航
    • 列出已安装的应用
    • 检查应用状态
    • 选项:--launch、--terminate、--install、--uninstall、--open-url、--list、--state、--json
测试与分析(5 个脚本)
  1. accessibility_audit.py - 检查当前屏幕是否符合 WCAG 要求

    • 严重问题(缺少标签、按钮为空、没有替代文本)
    • 警告(缺少提示、小型触控目标)
    • 信息(缺少 ID、嵌套过深)
    • 选项:--verbose、--output、--json
  2. visual_diff.py - 比较两张截图的视觉变化

    • 逐像素比较
    • 基于阈值判定通过/失败
    • 生成差异图像
    • 选项:--threshold、--output、--details、--json
  3. test_recorder.py - 自动记录测试执行过程

    • 在每个步骤捕获截图和无障碍树
    • 生成包含计时数据的 Markdown 报告
    • 选项:--test-name、--output、--verbose、--json
  4. app_state_capture.py - 创建全面的调试快照

    • 截图、UI 层级结构、应用日志、设备信息
    • 生成用于 Bug 报告的 Markdown 摘要
    • 选项:--app-bundle-id、--output、--log-lines、--json
  5. sim_health_check.sh - 验证环境配置是否正确

    • 检查 macOS、Xcode、simctl、IDB、Python
    • 列出可用和已启动的模拟器
    • 验证 Python 包(Pillow)
高级测试与权限(4 个脚本)
  1. clipboard.py - 管理模拟器剪贴板以进行粘贴测试

    • 将文本复制到剪贴板
    • 无需手动输入即可测试粘贴流程
    • 选项:--copy、--test-name、--expected、--json
  2. status_bar.py - 覆盖模拟器状态栏外观

    • 预设:clean(9:41,100% 电量)、testing(11:11,50%)、low-battery(20%)、airplane(离线)
    • 自定义时间、网络、电池和 WiFi 设置
    • 选项:--preset、--time、--data-network、--battery-level、--clear、--json
  3. push_notification.py - 发送模拟推送通知

    • 简易模式(标题 + 正文 + 徽标)
    • 自定义 JSON 载荷
    • 测试通知处理和深层链接
    • 选项:--bundle-id、--title、--body、--badge、--payload、--json
  4. privacy_manager.py - 授予、撤销和重置应用权限

    • 支持 13 种服务(相机、麦克风、位置、联系人、照片、日历、健康等)
    • 批量操作(以逗号分隔的服务)
    • 记录审计轨迹并跟踪测试场景
    • 选项:--bundle-id、--grant、--revoke、--reset、--list、--json
设备生命周期管理(5 个脚本)
  1. simctl_boot.py - 启动模拟器,可选验证其是否就绪

    • 按 UDID 或设备名称启动
    • 等待设备就绪,并设置超时时间
    • 批量启动操作(--all、--type)
    • 性能计时
    • 选项:--udid、--name、--wait-ready、--timeout、--all、--type、--json
  2. simctl_shutdown.py - 正常关闭模拟器

    • 按 UDID 或设备名称关闭
    • 可选验证关闭是否完成
    • 批量关闭操作
    • 选项:--udid、--name、--verify、--timeout、--all、--type、--json
  3. simctl_create.py - 动态创建模拟器

    • 按设备类型和 iOS 版本创建
    • 列出可用设备类型和运行时
    • 自定义设备名称
    • 返回 UDID,以便集成到 CI/CD
    • 选项:--device、--runtime、--name、--list-devices、--list-runtimes、--json
  4. simctl_delete.py - 永久删除模拟器

    • 按 UDID 或设备名称删除
    • 默认要求安全确认(使用 --yes 跳过)
    • 批量删除操作
    • 智能删除(使用 --old N 时,每种设备类型保留 N 台)
    • 选项:--udid、--name、--yes、--all、--type、--old、--json
  5. simctl_erase.py - 将模拟器恢复出厂设置,但不删除

    • 保留设备 UUID(比删除后重新创建更快)
    • 擦除全部、指定类型或已启动的模拟器
    • 可选验证
    • 选项:--udid、--name、--verify、--timeout、--all、--type、--booted、--json

常见模式

自动检测 UDID:大多数脚本会在未提供 --udid 时自动检测已启动的模拟器。

设备名称解析:可使用设备名称(例如,“iPhone 16 Pro”)代替 UDID,脚本会自动解析。

批量操作:许多脚本支持使用 --all 操作所有模拟器,或使用 --type iPhone 按设备类型筛选。

输出格式:默认输出简洁易读的内容。在 CI/CD 中使用 --json 可获得机器可读的输出。

帮助:所有脚本均支持 --help,可查看详细选项和示例。

典型工作流

  1. 验证环境:bash scripts/sim_health_check.sh
  2. 启动应用:python scripts/app_launcher.py --launch com.example.app
  3. 分析屏幕:python scripts/screen_mapper.py
  4. 交互:python scripts/navigator.py --find-text "Button" --tap
  5. 验证:python scripts/accessibility_audit.py
  6. 根据需要进行调试:python scripts/app_state_capture.py --app-bundle-id com.example.app

要求

  • macOS 12+
  • Xcode Command Line Tools
  • Python 3
  • IDB(可选,用于交互功能)

文档

  • SKILL.md(本文件)- 脚本参考和快速入门
  • README.md - 安装和示例
  • CLAUDE.md - 架构和实现细节
  • references/ - 特定主题的深入文档
  • examples/ - 完整的自动化工作流

核心设计原则

语义导航:根据含义(文本、类型、ID)而非像素坐标查找元素。即使 UI 发生变化,也能正常工作。

节省令牌:默认输出简洁(3-5 行),并提供可选的详细模式和 JSON 模式来显示详细结果。

无障碍优先:基于标准无障碍 API 构建,确保可靠性和兼容性。

零配置:在任何装有 Xcode 的 macOS 上都能立即使用。无需设置。

结构化数据:脚本输出 JSON 或格式化文本,而非原始日志。易于解析和集成。

自动学习:构建系统会记住你的设备偏好。配置按项目存储。


你可以直接使用这些脚本,也可以让 Claude Code 在你的请求符合技能描述时自动调用它们。

评论

支持 Markdown