
Baguette核心命令全解list、boot、tap、describe-ui、serve五大命令带你玩转Headless模拟器【免费下载链接】baguetteHeadless control for Apples Simulators — 3D models, taps, swipes, multi-finger gestures, 60 fps streaming, and a multi-device farm项目地址: https://gitcode.com/gh_mirrors/baguette/baguetteBaguette 是一个用 Swift 编写的命令行工具提供 Apple iOS 模拟器的 Headless 控制能力无需打开 Xcode 或 Simulator.app就能完成设备启动、60fps 屏幕串流、点击/滑动/多指手势注入、无障碍树读取、日志跟踪等操作。本文将从最实用的五大核心命令入手——list、boot、tap、describe-ui、serve带你在 5 分钟内跑通完整的自动化模拟器工作流。快速上手一条命令安装Baguette 只依赖 macOS 15、Xcode 26 和 Apple Silicon 环境通过 Homebrew 一键安装brew install baguette安装后终端里出现baguette命令你就拥有了一个完整的无头模拟器控制台。命令一list——列出所有模拟器任何操作之前先要知道有哪些设备可用。list是最基础也是最常用的命令baguette list它会列出默认设备集Xcode 的默认设备集中所有模拟器的状态。如果需要把结果接入脚本加--json输出与 Web 端/simulators.json完全一致的 JSON 结构baguette list --json新手提示每个模拟器都有一个唯一的UDID后续所有命令boot、tap、describe-ui等都靠--udid UDID来指定目标设备。list就是你的 UDID 查找器。命令二boot——Headless 启动模拟器拿到 UDID 后下一步就是启动设备baguette boot --udid UDID这里的 Headless 是关键特性启动过程在后台完成客户端断开也不会中断启动非常适合 CI 流水线。对应的关闭命令是baguette shutdown --udid UDID除了 CLIBaguette 的 Web 界面列表页、农场页、焦点模式页也都能点击 Boot 按钮启动设备甚至支持在农场页面批量启动。若启动后输入无响应通常与 Xcode 27 的 Device Hub 抢占输入面有关可以用baguette heal --udid UDID修复。详细原理见 boot 功能文档。命令三tap——注入点击与手势这是 Headless 控制最有价值的部分向模拟器动手。tap命令注入单点点击坐标使用设备点device points并需同时给出屏幕宽高baguette tap --udid UDID --x 219 --y 478 --width 438 --height 954围绕tapBaguette 还提供了一整套手势命令覆盖几乎所有人机交互命令作用swipe单指拖拽滚动列表、滑动double-tap双击触发 UITapGestureRecognizerpinch/pan双指捏合缩放 / 平行拖动press硬件按键Home、锁屏、音量以及 home 指示条上滑、通知中心下拉等系统手势type/paste/clipboard键盘输入、粘贴、剪贴板同步小技巧不确定屏幕尺寸和坐标运行baguette chrome layout --udid UDID获取当前设备的精确布局 JSON。手势命令的完整参数见 touches 功能文档和命令参考。命令四describe-ui——看见屏幕上的内容自动化里最大的难题往往是按钮到底在哪个坐标describe-ui完美解决它——把模拟器前台应用的无障碍树AX tree导出为 JSON包含按钮标签、帧坐标frame、可访问性标识符和父子层级baguette describe-ui --udid UDID # 导出完整 UI 树 baguette describe-ui --udid UDID --x 172 --y 880 # 命中测试某点下面是什么这就是 Baguette 的杀手级工作流找到它然后点击它find it, then tap it——用describe-ui拿到目标节点的frame计算中心点frame.x frame.width / 2、frame.y frame.height / 2直接把这个坐标喂给tap点击必然命中每次手势后重新读取一次树它是快照不是实时视图。比起截一张图再猜位置结构化坐标让脚本和 AI Agent 都更可靠。详见 accessibility 功能文档。命令五serve——Web UI 与多设备农场前四个命令是单人操作serve则打开上帝视角——启动一个独立的模拟器 Web 服务器baguette serve # 默认监听 127.0.0.1:8421浏览器打开后你会得到三个核心页面/simulators设备列表页每行带 Boot / Shutdown 按钮/simulators/UDID焦点模式页——60fps 实时串流 设备边框bezel 工具栏点击画布即可注入真实触摸/farm设备农场所有已启动的模拟器并排显示支持批量操作。除了页面serve还暴露了一整套 HTTP / WebSocket 路由如POST /simulators/UDID/boot、GET /simulators/UDID/screenshot.png、WS /simulators/UDID/stream可以直接从脚本、插件甚至你自己的网页中调用。完整路由表见 serve 路由文档。组合拳一个完整的 Headless 自动化工作流把五大命令串起来就是典型的自动化脚本骨架# 1. 找到目标设备 UDID$(baguette list --json | jq -r .available[0].udid) # 2. 启动 baguette boot --udid $UDID # 3. 读取 UI 树找到登录按钮的坐标 baguette describe-ui --udid $UDID --output tree.json # 4. 点击按钮坐标取自 tree.json 中的 frame 中心 baguette tap --udid $UDID --x 219 --y 478 --width 438 --height 954而baguette serve让你在每一步之后都能随时打开浏览器肉眼看设备状态——CLI 负责精确Web 负责直观两者互补。延伸探索更多能力速览五大命令只是入口Baguette 的能力远不止于此能力命令文档截图 / 录屏screenshot/recordscreenshot、recording60fps 屏幕串流streamstream3D 设备模型渲染render-3d3d-renderingGPS 位置 / 路线locationlocation网络限速 / 断网networknetwork日志实时跟踪logslogs长会话 JSON 手势流inputwire 协议全部 39 个命令的完整参数见命令参考整体设计思路见架构文档。写在最后Baguette 的价值在于把 iOS 模拟器的控制从打开 GUI 点点点变成了可脚本化、可组合、可并行的工程化操作。记住这条主线就够了list找设备 →boot启动 →describe-ui定位 →tap操作 →serve观察Bon appétit祝你自动化愉快【免费下载链接】baguetteHeadless control for Apples Simulators — 3D models, taps, swipes, multi-finger gestures, 60 fps streaming, and a multi-device farm项目地址: https://gitcode.com/gh_mirrors/baguette/baguette创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考