为什么需要浏览器自动化
OpenClaw 的 cron 定时任务很香,但有个盲区:它只能调 API。一旦遇到没有开放 API 的页面——公众号后台、各种管理系统、需要登录才能看的看板——就束手无策了。
OpenClaw 内置了 browser 工具(底层是 Playwright + Chromium),它能像人一样打开网页、点按钮、读内容、填表单。换句话说,凡是你能在浏览器里手动干的活,都能交给 AI 定时跑。
本文用真实可用的命令,带你走完「检查 → 打开 → 读 → 点 → 批量动作」全流程,并附一份踩坑清单。
第一步:先确认浏览器能跑(doctor)
别一上来就开页面。先确认浏览器插件和 Chromium 就绪:
openclaw browser doctor
openclaw browser status
doctor检查浏览器插件是否安装、Chromium 是否可启动,出错会直接告诉你缺什么。status看当前浏览器可用状态(是否在线、有几个 profile)。
如果 doctor 报 Chromium 缺失,按它的提示装一下依赖再继续,否则后面每一步都会超时。
第二步:打开页面并抓快照
openclaw browser open --url "https://example.com" --label "task"
openclaw browser snapshot --targetId task --refs aria
几个关键约定:
--label task给标签页起一个稳定名字,之后所有操作都用targetId:"task"指代。别用原始的targetId(那串会随 Chromium 标签页替换而变化),用 label 最稳。--refs aria拿到的是稳定的 ARIA 引用(如e12),专门用来给后续点击用。
如果之前可能残留了标签页,先列一下、复用或关掉多余的:
openclaw browser tabs
openclaw browser close --targetId t3
第三步:读内容 / 点按钮
读正文(这才是读文章该用的方式,snapshot 会省略大部分正文):
openclaw browser text --targetId task --selector "article" --maxChars 2000
不指定 selector 时,默认读 article / main / body 第一段匹配。
点击(用上一步快照里的 ref):
openclaw browser act --targetId task --kind click --ref e12
批量动作(一次把一串动作发过去,省去来回):
openclaw browser batch --actions '[{"kind":"click","ref":"e12"},{"kind":"wait","timeoutMs":1500},{"kind":"snapshot","refs":"aria"}]' --targetId task
重要:
batch里改变页面的动作(导航、提交表单)会让之前的 ref 失效。把状态变更动作放前面,或变更后重新 snapshot 再点。
常用动作速查表
| 想做的事 | 命令 | 说明 |
|---|---|---|
| 看浏览器是否可用 | browser status |
排查第一步 |
| 开标签页 | browser open --url --label |
用 label 当稳定句柄 |
| 读正文 | browser text --selector |
读文章用这个,别用 snapshot |
| 点按钮 | browser act --kind click --ref |
ref 来自 snapshot |
| 填表单 | browser act --kind fill --ref |
配合 ref 写入 |
| 一次跑一串 | browser batch --actions |
减少往返,注意 ref 失效 |
真实避坑清单
- 登录态要用现有浏览器:需要已登录的 cookie,用
profile:"user"或先importprofile把真实浏览器的 cookie 拷进干净容器。别用全新容器白登一遍,二维码/eval 都麻烦。 - stale ref 恢复:动作报 ref 失效,先对同一个
targetId重新snapshot,拿到新 ref 再点一次,不要死循环重试旧的。 - 别盲目 sleep:优先等页面出现可见状态,而不是写死等待时间。
wait动作也是等状态,不是干等。 - 抓文本用 text 而非 snapshot:snapshot 是给「要点哪」用的,会省略正文;读内容一定用
text。 - 遇到验证码/2FA/登录弹窗:这是人工步骤,停下来告诉用户「需要你扫码/输验证码」,别硬闯,硬闯只会卡死。
- 国产浏览器页面:
profile:"user"这类现有会话 profile 不支持 emulate(设备/时区模拟),需要模拟时用干净容器。
一个能直接跑的定时采集骨架
把上面这套放进 cron,就能让 AI 每天自动打开某后台读数据、存文件或推微信:
# cron 触发后,AI 大致会执行:
openclaw browser open --url "https://your-dashboard.example.com" --label "daily"
openclaw browser snapshot --targetId daily --refs aria # 找登录/数据区 ref
openclaw browser text --targetId daily --selector "table" --maxChars 4000
# 结果写进文件 / 通过 message 工具推到微信
核心思路就一句:open 拿页面 → snapshot 拿 ref → text 读内容 / act 点操作 → batch 串起来。登录态用 profile 带,cookie 跟着走;ref 失效就重新 snapshot。
把重复性的「打开网页抄数据」交给浏览器自动化,你只需要在意数据本身。
关注我
如果这篇对你有用,欢迎关注我的公众号,第一时间收到 OpenClaw 实操更新:

扫码或微信搜索公众号名称即可。每天一篇 OpenClaw 中文实操手记。