用途:在 simctl 能力之外自动化 iOS 模拟器的 UI 交互,例如点击、滑动手势、文本输入、硬件按钮、截图与视频录制。AXe 基于 Apple 辅助功能 API 与 HID,单个二进制文件,无需守护进程。
安装与版本验证: brew install cameroncooke/axe/axe axe --version
主要能力:
- 点击与触摸:axe tap --id "loginButton" 或 --label "Login",坐标方式 axe tap -x 200 -y 400,支持 --pre-delay、--post-delay、--duration;低级事件 axe touch down/up。
- 手势:axe swipe --start-x … --end-x …,以及预设 axe gesture scroll-up/down/left/right、swipe-from-left-edge 等。
- 文本输入:axe type "…",支持 --char-delay、--stdin、--file。
- 按键与硬件按钮:axe key 40(Return),axe key-sequence,axe button home/lock/side-button/siri/apple-pay。
- 截图与录制:axe screenshot --output,axe record-video --output,axe stream-video --format/--fps。
- UI 检查:axe describe-ui 输出辅助功能树(类型、identifier、label、frame、enabled),可用 --point 查询坐标元素。
使用方式与最佳实践:多数命令需 --udid,可用 axe list-simulators 或 xcrun simctl 获取已启动设备 UDID。始终先运行 describe-ui 获取精确元素坐标,不要从截图猜测坐标;元素定位优先级为 --id(最稳定)、--label、最后才是 -x -y 坐标。AXe 与 simctl 配合使用:simctl 负责设备生命周期、权限、状态栏等,AXe 负责 UI 自动化。
限制与注意:AXe 不提供设备生命周期、权限、推送通知、状态栏、深链等 simctl 功能;使用私有 API,需在装有 Xcode 的 Mac 上运行并具备相应权限;元素找不到时用 describe-ui 排查,输入前需先聚焦文本框。
更多资料:https://github.com/cameroncooke/AXe