Skip to content

10.5 常见问题排查


想象一下这个场景:

你设置好了自动发帖任务,满怀期待地点击运行。

浏览器启动了,页面打开了——

然后卡住了。AI 报错:"Element not found"。

你翻日志、查配置、重启 Gateway,折腾了半小时还是不行。

最后发现:只是忘了等待页面加载。

浏览器自动化涉及多个组件协同工作,遇到问题很正常。这一节,我们用 15 分钟,建立一套完整的问题排查方法论。


问题 1:浏览器启动失败

现象

Error: Failed to start Chrome CDP on port 18800

Browser process exited with code 1

排查步骤

第一步:检查浏览器是否已安装

bash
# macOS
ls /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome

# Linux
which google-chrome-stable
which chromium-browser

# Windows
Get-Command "C:\Program Files\Google\Chrome\Application\chrome.exe"

第二步:检查可执行路径配置

bash
# 查看当前配置
openclaw config get browser.executablePath

# 如果路径错误或为空,重新设置
openclaw config set browser.executablePath "/usr/bin/google-chrome-stable"

第三步:Linux 特殊处理(snap Chromium)

Ubuntu 默认的 Chromium 是 snap 包,会触发权限问题。

解决方案:安装官方 Chrome

bash
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt --fix-broken install -y

# 配置 OpenClaw
openclaw config set browser.executablePath "/usr/bin/google-chrome-stable"
openclaw config set browser.headless true
openclaw config set browser.noSandbox true

第四步:检查端口占用

bash
# 查看 18800 端口是否被占用
lsof -i :18800

# 如果被占用,更换端口
openclaw config set browser.profiles.openclaw.cdpPort 18803

第五步:查看详细日志

bash
openclaw gateway logs | grep -i browser

问题 2:页面加载超时

现象

Timeout waiting for page to load

或页面一直空白。

可能原因与解决方案

原因 1:网络问题

bash
# 测试网络连通性
ping xiaohongshu.com

# 测试 DNS 解析
nslookup xiaohongshu.com

原因 2:页面资源加载慢

增加等待时间:

bash
openclaw browser wait --load networkidle --timeout-ms 30000

原因 3:被网站拦截

某些网站会检测自动化浏览器。尝试:

1。 关闭无头模式(headless: false) 2。 设置正常窗口大小 3。 添加随机延迟

bash
# 设置窗口大小
openclaw browser resize 1280 720

# 等待时添加随机延迟
openclaw browser wait --text "加载完成" --timeout-ms 20000

原因 4:JavaScript 渲染问题

某些 SPA(单页应用)需要等待 JS 执行完成:

bash
# 等待特定 JS 条件
openclaw browser wait --fn "window.ready===true"

# 或等待特定元素出现
openclaw browser wait "#main-content"

问题 3:元素定位问题

现象

Element not found

Multiple elements match the selector

排查方法

第一步:获取最新快照

ref 在页面变化后会失效,需要重新获取:

bash
openclaw browser snapshot --interactive

第二步:使用高亮确认元素

bash
# 高亮显示 ref=12 的元素
openclaw browser highlight 12

这会在浏览器中用红色框标出目标元素,确认是否正确。

第三步:检查元素是否可见

bash
# 获取带标签的截图
openclaw browser snapshot --labels

截图上会显示每个元素的 ref 标签。

第四步:滚动到元素可见

bash
# 先滚动到元素位置
openclaw browser scrollintoview 12

# 再点击
openclaw browser click 12

第五步:使用角色 ref(更稳定)

bash
# 使用角色快照
openclaw browser snapshot --interactive --compact

# 输出示例:
# [e12] button "发布"
# [e13] input "标题"

# 使用角色 ref 操作
openclaw browser click e12
openclaw browser type e13 "笔记标题"

问题 4:操作被拦截

现象

Element is not clickable

Element is covered by another element

解决方案

原因 1:有弹窗遮挡

bash
# 先关闭弹窗(通常是第一个元素)
openclaw browser click 1

# 或按 ESC 键
openclaw browser press Escape

原因 2:元素被其他元素覆盖

bash
# 滚动到元素位置,确保在视口中心
openclaw browser scrollintoview 12

# 等待一下再点击
sleep 1
openclaw browser click 12

原因 3:需要悬停才能点击

bash
# 先悬停
openclaw browser hover 12

# 再点击
openclaw browser click 12

问题 5:登录状态丢失

现象

每次启动浏览器都需要重新登录。

排查步骤

第一步:检查用户数据目录

bash
# 查看目录是否存在
ls -la ~/.openclaw/browser/openclaw/user-data

# 查看目录大小(正常应该有几十MB)
du -sh ~/.openclaw/browser/openclaw/user-data

第二步:确认使用正确的配置文件

bash
# 检查当前使用的配置文件
openclaw config get browser.defaultProfile

# 确保是 openclaw,不是 chrome
openclaw config set browser.defaultProfile "openclaw"

第三步:检查是否使用了无痕模式

无痕模式不会保存 Cookie。确保配置中:

json5
{
  "browser": {
    "headless": false  // 不要设为 true 时意外触发无痕
  }
}

第四步:网站强制要求重新登录

某些网站(如银行、支付平台)出于安全考虑会定期要求重新验证。这种情况无法避免。


问题 6:扩展中继模式连接失败

现象

扩展图标显示 !,或提示"中继不可达"。

排查步骤

第一步:检查 Gateway 是否运行

bash
openclaw gateway status

第二步:确认扩展已正确加载

1。 打开 chrome://extensions 2。 确认 OpenClaw 扩展已启用 3。 点击"重新加载"刷新扩展

第三步:检查扩展路径

bash
# 重新安装扩展
openclaw browser extension install

# 确认路径
openclaw browser extension path

第四步:确认在正确标签页点击扩展

扩展只控制你明确点击的那个标签页,不会自动接管所有标签页。

第五步:检查远程 Gateway 设置

如果 Gateway 运行在远程服务器,需要在本地运行节点主机:

bash
openclaw node start

调试技巧

1。 开启 Trace 录制

bash
# 开始录制
openclaw browser trace start

# 执行你的操作
openclaw browser open https://example.com
openclaw browser click 12

# 停止录制
openclaw browser trace stop
# 输出: TRACE:/path/to/trace.zip

用 Chrome 打开 trace.zip,可以逐帧查看操作过程。

2。 查看控制台错误

bash
# 查看浏览器控制台错误
openclaw browser console --level error

# 清空错误日志
openclaw browser errors --clear

3。 查看网络请求

bash
# 查看所有 API 请求
openclaw browser requests --filter api

# 查看特定请求的响应体
openclaw browser responsebody "**/api/data" --max-chars 5000

4。 截图排查

bash
# 截图当前页面
openclaw browser screenshot

# 截图特定元素
openclaw browser screenshot --ref 12

# 截图整个页面
openclaw browser screenshot --full-page

快速诊断清单

遇到问题时,按这个顺序排查:

步骤检查项命令
1Gateway 是否运行openclaw gateway status
2浏览器配置是否正确openclaw config get browser
3浏览器是否能启动openclaw browser start
4页面是否能打开openclaw browser open URL
5快照是否正常openclaw browser snapshot
6查看错误日志openclaw gateway logs

这一节,你做了什么

学了什么核心理解
启动失败检查路径、端口、Linux 用官方 Chrome
加载超时增加等待时间、检查网络、等待 JS
元素定位重新获取 snapshot、用 highlight 确认
调试技巧trace 录制、控制台错误、网络请求

第十章总结

恭喜你!第十章到此结束。你已经掌握了浏览器自动化的完整能力:

章节核心内容
10.1两种模式:托管 vs 扩展中继
10.2配置托管浏览器
10.3登录态持久化
10.4实战自动发帖
10.5常见问题排查

下一步:第十一章,我们来学习如何用 Obsidian 管理 AI 的知识库。

基于 MIT 许可发布