一个基于 Apple 无障碍接口与人机交互设备(HID)功能的 iOS 模拟器命令行自动化工具
AXe 是一个功能完备的命令行工具,利用 Apple 的 Accessibility API 和 HID(人机接口设备)模拟能力,实现对 iOS 模拟器的深度自动化控制。无需依赖 XCUITest 或私有框架,AXe 可直接模拟用户在真实设备上的所有操作,适用于测试、演示、录制与自动化工作流。

核心功能
1. 触控与手势控制
- 精准点击:在指定坐标触发触摸事件,支持自定义按下/释放时长
- 多点滑动:可配置速度、持续时间与轨迹增量的滑动手势
- 底层触控:直接发送
touchDown / touchUp 事件,用于构建自定义复杂手势 - 预设手势:开箱即用的常用操作,包括:
- 上滚 / 下滚(scroll up/down)
- 左滑 / 右滑(swipe left/right)
- 边缘滑动(edge swipe,常用于返回或唤出侧边栏)
2. 文本与键盘输入
- 智能文本输入:自动处理大小写(Shift 键),支持完整 ASCII 与 Unicode 字符
- 单键按下:通过标准 HID 键码发送按键事件(如 Enter、Space、Esc)
- 按键序列:支持带时间间隔的多键组合(例如
Cmd+C、Ctrl+L) - 灵活输入源:
- 直接传入字符串
- 从标准输入(stdin)读取
- 从文件加载内容
3. 硡件按钮模拟
AXe 可精确模拟物理设备上的所有硬件按钮行为:
- Home 按钮:返回主屏幕
- 电源/锁定键:支持短按(锁屏)与长按(关机/重启)
- 侧边按钮(Side Button):iPhone X 及更新机型的电源/唤醒键
- Siri 按钮:触发 Siri 语音助手
- Apple Pay 按钮:模拟双击侧边按钮唤出 Apple Pay
4. 精确时序控制
- 操作延迟:在每条命令前/后插入可配置的等待时间
- 手势持续时间:控制滑动、长按等操作的执行时长(毫秒级精度)
- 序列间隔:在按键或手势序列中插入自定义停顿
- 多步骤工作流:组合多个带时序的指令,构建复杂自动化脚本
5. 视频录制与流媒体
- 实时视频流:以 1–30 FPS 持续捕获模拟器画面
- 多格式输出:
- MJPEG(网络流)
- 原始 JPEG 序列
- ffmpeg 兼容格式(便于后处理)
- BGRA 像素缓冲(用于自定义渲染)
- H.264 硬件编码:通过
axe record-video 直接生成高效 MP4 文件 - 画质调节:可配置 JPEG 压缩质量与输出缩放因子(如 0.5x 降低分辨率)
- 低延迟设计:优化帧捕获时序,保障录制流畅性
6. 无障碍信息与模拟器管理
- UI 元素探测:
- 获取屏幕任意坐标的无障碍描述(accessibility label、value、traits)
- 提取全屏 UI 层级结构(用于断言或状态检测)
- 模拟器枚举:列出当前系统中所有可用的 iOS 模拟器设备(UDID + 名称 + 状态)
🛠️ 典型应用场景
- 自动化 UI 回归测试(无需侵入 App 代码)
- 演示视频录制(支持带手势的完整操作流)
- Accessibility 合规性验证
- 跨版本 iOS 行为对比
- CI/CD 中的无头模拟器交互