前言
本系列文章持续更新 OpenClaw 技术栈,帮助开发者掌握自托管 AI 网关的核心技能。
本文是 OpenClaw 技术系列的第 4 篇,深入讲解 OpenClaw 浏览器自动化:Playwright 深度集成。
在之前的文章中,我们介绍了 OpenClaw 的基础架构、多 Agent 协作和技能开发。本文将带你深入了解 OpenClaw 的浏览器自动化能力,这是 AI Agent 与 Web 应用交互的核心技能。
一、浏览器控制原理
OpenClaw 的浏览器自动化基于 Playwright 引擎,提供稳定可靠的 Web 交互能力。其核心架构包含三个层次:
1.1 控制服务器层
OpenClaw Browser Control Server 作为中间层,负责接收 AI 的指令并转换为具体的浏览器操作。这种设计避免了 AI 直接操作浏览器的复杂性,提供了统一的 API 接口。
1.2 浏览器引擎层
支持 Chrome、Firefox、WebKit 多种浏览器内核,通过 Playwright 的跨浏览器能力实现一致的操作体验。OpenClaw 默认使用 Chrome 浏览器,可通过 profile 参数选择:
openclaw:独立配置文件,适合自动化任务chrome:Chrome 扩展接管,适合人工辅助场景
1.3 页面交互层
通过 Aria 反射和角色定位(role-based)两种引用模式,AI 可以精确识别页面元素。Aria 模式提供更稳定的元素引用,适合复杂页面;Role 模式更直观,适合标准 UI 组件。
二、页面元素定位策略
准确的元素定位是浏览器自动化的基础。OpenClaw 提供多种定位方式:
2.1 快照引用(推荐)
使用 snapshot 获取页面当前状态,返回带引用的元素树:
{
"action": "snapshot",
"refs": "aria", // 或 "role"
"targetId": "tab-id"
}
返回的元素引用如 e12 可用于后续操作,避免重复解析 DOM。
2.2 选择器定位
对于已知结构的页面,可直接使用 CSS 选择器或 XPath:
{
"action": "act",
"request": {
"kind": "click",
"selector": "#login-button"
}
}
2.3 文本定位
通过页面文本内容定位元素,适合动态生成的页面:
{
"action": "act",
"request": {
"kind": "click",
"text": "登录"
}
}
三、表单填写与提交
表单操作是 Web 自动化的常见需求。OpenClaw 提供完整的表单交互支持:
3.1 单字段填写
{
"action": "act",
"request": {
"kind": "type",
"ref": "e15",
"text": "username@example.com"
}
}
3.2 多字段批量填写
{
"action": "act",
"request": {
"kind": "fill",
"fields": [
{"ref": "e15", "value": "username@example.com"},
{"ref": "e18", "value": "password123"}
]
}
}
3.3 表单提交
{
"action": "act",
"request": {
"kind": "press",
"key": "Enter"
}
}
或点击提交按钮:
{
"action": "act",
"request": {
"kind": "click",
"text": "提交"
}
}
四、截图与数据提取
可视化验证和数据提取是自动化的重要环节:
4.1 页面截图
{
"action": "screenshot",
"type": "png",
"fullPage": true
}
截图可用于:
- 操作前验证页面状态
- 操作后确认结果
- 异常情况的调试记录
4.2 数据提取
通过 evaluate 执行 JavaScript 提取页面数据:
{
"action": "act",
"request": {
"kind": "evaluate",
"fn": "() => document.querySelector('.article-title').innerText"
}
}
4.3 PDF 导出
将页面保存为 PDF 文档:
{
"action": "pdf",
"targetId": "tab-id"
}
五、反爬虫应对方案
网站反爬机制是自动化必须面对的挑战。以下是实用策略:
5.1 使用真实浏览器
避免使用无头模式(headless),真实浏览器窗口更难被检测。OpenClaw 默认使用有头模式。
5.2 操作节奏控制
模拟人类操作速度,避免过快请求:
{
"action": "act",
"request": {
"kind": "type",
"ref": "e15",
"text": "content",
"slowly": true // 慢速输入
}
}
5.3 Cookie 持久化
使用 openclaw profile 保存登录状态,减少重复登录触发验证。
5.4 等待策略
使用智能等待而非固定延迟:
{
"action": "act",
"request": {
"kind": "wait",
"textGone": "加载中..." // 等待文本消失
}
}
5.5 文件下载处理
对于下载操作,使用专用参数确保完整捕获:
{
"action": "act",
"request": {
"kind": "click",
"ref": "e25"
},
"waitForDownload": true,
"downloadTimeoutMs": 60000
}