用途:AXe 是操作 iOS 模拟器 UI 的 CLI 工具,基于 Apple 辅助功能 API 与 HID 功能,单二进制、无需守护进程,用于补充 simctl 无法完成的 UI 交互。
主要能力:按辅助功能标识(--id)或标签(--label)点击,也支持坐标点击;自定义滑动与预设手势(滚动、边缘滑动);文本输入(含字符延迟、stdin、文件);HID 键码按键与按键序列;硬件按钮(home、lock、side-button、siri、apple-pay);截图(PNG)、录屏(H.264)与视频流(MJPEG/JPEG/FFmpeg/BGRA);describe-ui 导出辅助功能树,含元素类型、标识、标签、frame 与启用状态。
使用方式:安装 brew install cameroncooke/axe/axe,用 axe --version 验证。多数命令需模拟器 UDID,可用 xcrun simctl list devices -j 配合 jq 获取已启动设备,或 axe list-simulators。最佳实践是先运行 axe describe-ui --udid $UDID 获取精确坐标与标识,再优先用 --id、其次 --label、最后才用坐标。常用命令如 axe tap --id "loginButton" --udid $UDID、axe type "user@example.com" --udid $UDID、axe gesture scroll-down --udid $UDID、axe screenshot --output /tmp/x.png --udid $UDID。多数命令支持 --pre-delay、--post-delay、--duration、--char-delay 等时序控制。
适用场景:iOS 模拟器上的 UI 自动化测试、登录等流程脚本、元素发现、错误现场截图与录屏。
限制:AXe 不负责设备生命周期、权限、推送、状态栏与深链,这些仍用 simctl;它使用私有 API,需在装有 Xcode 的 Mac 上运行并具备相应权限。元素找不到时先 describe-ui 检查标识与可见性;点击无效时检查 enabled 状态或加 --pre-delay;输入无效时先聚焦文本框。收费、价格与平台支持等资料暂未提供。