常见失败与数据位置
先看运行记录,再看现场截图;大多数问题到这一步就能定位。日志文件放在最后看。
选择器问题
「匹配到 N 个元素」
点击、输入、选择、粘贴必须恰好匹配一个。匹配多个时 BrowserPilot 直接失败,不取第一条。
定位:
page_query { "selector": "button.submit" }返回每一项的 index、文字、hittable 和 rect。把选择器收窄到唯一,例如加 [name=...]、父级作用域或 :nth-of-type()。
「超时还没出现」
page_wait 默认 10 秒、最长 60 秒。先确认页面真的加载了:
page_snapshot {}
page_source { "kind": "dom" }如果目标在 iframe 或 Shadow DOM 里,加 pierce: true;跨域 iframe 顶层查不到时会自动走 OOPIF。
「Script failed to execute」
page_script 的 source 是表达式,不是函数体。不要写:
return { title: document.title }要写:
(() => ({ title: document.title }))()多条语句用 IIFE:
(() => { const cards = document.querySelectorAll('article'); return { count: cards.length }; })()工作流里的「页面脚本」节点不同:它会被包进 async 函数,可以直接写 return。
MCP 连不上
端点不存在
先确认应用开着,且 设置 → 通用 → MCP 是开的。端点文件:
Windows: %APPDATA%\BrowserPilot\mcp.json
macOS: ~/Library/Application Support/BrowserPilot/mcp.json
Linux: ~/.config/BrowserPilot/mcp.json文件里是 url 和 token。应用关掉后端点就没了。
401 unauthorized
请求头必须是 Authorization: Bearer <token>,token 来自 mcp.json。不要自己改 token;需要换就重启应用让服务重写。
端口被占用
默认 39221。改 设置 → 通用 → 端口,应用会重开服务并重写 mcp.json。客户端里同步改 URL。
只能本机访问
MCP 只监听 127.0.0.1,没有对外网开放的开关。远程机器请用远程桌面,不要把端口映射出去。
标签与环境
「没有这个标签」
tabId 已经关了,或编号不属于任何窗口。先:
tab_list {}不要复用旧编号,也不要在没找到时另开一个同名标签。
登录失效
打开对应环境的窗口,人重新登录。登录态在:
%APPDATA%\BrowserPilot\Partitions\<env-id>\关窗口不清;只有 env_delete 会清 Cookie 并删除分区。默认环境不能删。
换机器
env_export { "env": "env-..." }
env_import { "path": "C:\path\env-....json" }导出文件是明文 Cookie,只在本机传递。
「无头窗口已到上限」
设置 → 通用 → 无头窗口上限 默认 3。超出时这次打开失败,已经在跑的不打断。有头窗口不占这个数量。
工作流
失败停在哪
打开工作流详情 →「运行记录」,或在 runs.json 里看:
node:停在哪个节点error:错误文本screenshot:现场截图路径files:已经产出的文件
存储上限 200 条;界面列表最多 50 条。Agent 逐步调用工具不写运行记录,只有工作流运行会写。
开了抓包但失败没 HAR
只有失败当时抓包还开着,才会把 HAR 写进 runs\。先 net_start,再跑工作流;跑完再 net_stop。
页面崩溃
v0.13.12 起,webContents.isDestroyed() 时会自动重建视图并恢复页面。仍然失败就重开标签,或重启应用;不要在原标签上继续调用。
下载与媒体
下载在哪
%APPDATA%\BrowserPilot\downloads下载管理器支持暂停、继续、取消、重试、复制链接。网页触发的下载都会进这里;page_save_media 保存的文件进 media(或你给的 savePath)。
视频保存失败
- 直链 / DASH / m3u8 走
page_save_media;需要 ffmpeg。首次会从镜像下载到:
%APPDATA%\BrowserPilot\tools- 抓不到轨的流媒体(Worker 拉流、加密流)用
page_record_video录渲染画面,代价是要实时播完。 - m3u8 清单和抓不到轨的情况,工具会在返回里说明。
验证码
- 自动支持:极验 v4 滑块(
captcha_solve,cv → ddddocr → onnx)。 - 文字验证码:
captcha_read,需要本机 Python 与pip install ddddocr。 - 其它类型:
captcha_panel截图交给会看图的 Agent;成功率取决于题型与模型。 - 图标点选、五子棋、交换消除:没有内置识别器,建议
page_handoff交给人。
CLI
找不到命令
CLI 默认不在 PATH:
%LOCALAPPDATA%\Programs\BrowserPilot\resources\cli\browserpilot.exe要么写全路径,要么把这个目录加进 PATH。
应用没起来
CLI 会尝试启动应用。安装版需要告诉它 exe 在哪:
set BROWSERPILOT_EXE=%LOCALAPPDATA%\Programs\BrowserPilot\BrowserPilot.exe然后 CLI 最多等 45 秒读 mcp.json。
中文参数
不要把中文直接写进 --json。写进 UTF-8 的 JSON 文件,用 --json-file。
数据位置总表
| 内容 | 路径(Windows) |
|---|---|
| 环境 / 分组 / 工作流 / 设置 | %APPDATA%\BrowserPilot\envs.json、groups.json、workflows.json、settings.json |
| 运行记录 | %APPDATA%\BrowserPilot\runs.json |
| 现场截图 | %APPDATA%\BrowserPilot\screenshots\ |
| 失败截图与 HAR | %APPDATA%\BrowserPilot\runs\ |
| 导出的 CSV | %APPDATA%\BrowserPilot\exports\ |
| 网页下载 | %APPDATA%\BrowserPilot\downloads\ |
| 媒体保存 | %APPDATA%\BrowserPilot\media\ |
| 窗口录屏 | %APPDATA%\BrowserPilot\videos\ |
| ffmpeg | %APPDATA%\BrowserPilot\tools\ |
| 环境登录分区 | %APPDATA%\BrowserPilot\Partitions\<env-id>\ |
| MCP 端点 | %APPDATA%\BrowserPilot\mcp.json |
macOS 把 %APPDATA% 换成 ~/Library/Application Support;Linux 换成 ~/.config。
备份就是整个目录拷走。卸载程序不会删这个目录。