OpenClaw 浏览器自动化详解:控制 Chrome 做 Anything

7 阅读5分钟

OpenClaw 浏览器自动化详解:控制 Chrome 做 Anything

系列文章: 《OpenClaw 从入门到精通》第 4 期
难度等级: ⭐⭐⭐
预计耗时: 45 分钟


🎯 本文目标

学会用 OpenClaw 控制浏览器完成各种自动化任务:

  • ✅ 打开网页、导航
  • ✅ 点击按钮、填写表单
  • ✅ 抓取数据、截图保存
  • ✅ 批量操作、循环处理

📚 核心概念

1. 浏览器控制原理

OpenClaw → Chrome DevTools Protocol → 浏览器
   ↓
自然语言指令 → 转换为具体操作

2. 支持的浏览器

  • ✅ Google Chrome(推荐)
  • ✅ Microsoft Edge
  • ✅ Chromium
  • ✅ Firefox(部分支持)

🔧 基础操作

1. 打开网页

# 简单打开
openclaw "打开百度首页"

# 指定浏览器
openclaw "用 Chrome 打开 GitHub"

# 新标签页打开
openclaw "在新标签页打开 CSDN"

2. 页面导航

openclaw "跳转到登录页面"
openclaw "返回上一页"
openclaw "前进到下一页"
openclaw "刷新当前页面"

3. 元素操作

# 点击
openclaw "点击登录按钮"
openclaw "点击第 3 个搜索结果"

# 输入
openclaw "在搜索框输入 OpenClaw"
openclaw "填写用户名为 admin"

# 选择
openclaw "选择第一个选项"
openclaw "勾选同意协议"

💻 实战案例

案例 1:自动登录 CSDN

openclaw "
1. 打开 CSDN 登录页面
2. 输入账号密码
3. 点击登录
4. 确认登录成功
"

详细步骤:

  1. 导航到 passport.csdn.net/login
  2. 找到账号输入框,输入用户名
  3. 找到密码输入框,输入密码
  4. 点击登录按钮
  5. 等待页面跳转,确认登录成功

案例 2:抓取 GitHub 项目 Star 数

openclaw "
1. 打开 OpenClaw 的 GitHub 页面
2. 找到 Star 按钮
3. 提取 Star 数量
4. 保存到文件
"

实现代码:

from openclaw import Browser

browser = Browser()
browser.open("https://github.com/openclaw/openclaw")
stars = browser.extract(".star-count")
browser.save(stars, "stars.txt")

案例 3:批量下载图片

openclaw "
1. 打开图片网站
2. 搜索关键词
3. 下载前 10 张图片
4. 保存到指定文件夹
"

实现逻辑:

# 搜索
browser.type(".search-box", "AI 图片")
browser.click(".search-btn")

# 等待加载
browser.wait(3)

# 下载图片
images = browser.find_all("img")
for i, img in enumerate(images[:10]):
    img.download(f"images/{i}.jpg")

案例 4:自动填写表单

openclaw "
帮我填写这个注册表单:
- 用户名:testuser
- 邮箱:test@example.com
- 密码:Test123!
- 确认密码:Test123!
- 勾选同意协议
- 点击注册
"

字段映射:

form_data = {
    "username": "testuser",
    "email": "test@example.com",
    "password": "Test123!",
    "confirm_password": "Test123!",
    "agree_terms": True
}

browser.fill_form(form_data)
browser.submit()

🎓 高级技巧

技巧 1:等待元素加载

# 等待特定时间
openclaw "等待 3 秒"

# 等待元素出现
openclaw "等待登录按钮出现"

# 等待页面加载完成
openclaw "等待页面完全加载"

代码实现:

# 固定等待
browser.wait(3)

# 智能等待
browser.wait_for_element(".login-btn", timeout=10)

# 等待加载状态
browser.wait_until_loaded()

技巧 2:处理弹窗

# 确认弹窗
openclaw "点击确认按钮"

# 关闭弹窗
openclaw "关闭这个弹窗"

# 忽略弹窗
openclaw "忽略这个提示"

处理逻辑:

try:
    modal = browser.find(".modal")
    if modal.exists():
        modal.click(".confirm-btn")
except:
    pass  # 没有弹窗

技巧 3:多标签页管理

# 新建标签页
openclaw "打开新标签页"

# 切换标签页
openclaw "切换到第 2 个标签页"

# 关闭标签页
openclaw "关闭当前标签页"

# 列出所有标签页
openclaw "显示所有打开的标签页"

API 使用:

# 新建
tab = browser.new_tab()
tab.open("https://example.com")

# 切换
browser.switch_tab(1)

# 关闭
browser.close_tab()

# 列表
tabs = browser.list_tabs()

技巧 4:截图和录屏

# 全屏截图
openclaw "截取整个页面"

# 区域截图
openclaw "截取登录表单区域"

# 元素截图
openclaw "截取这个按钮"

# 开始录屏
openclaw "开始录制屏幕"

保存选项:

# 全屏
browser.screenshot("full_page.png", full_page=True)

# 区域
browser.screenshot("form.png", selector=".form")

# 元素
button = browser.find(".btn")
button.screenshot("button.png")

技巧 5:数据提取

# 提取文本
openclaw "提取文章标题"

# 提取链接
openclaw "提取所有外部链接"

# 提取表格
openclaw "提取这个表格的数据"

# 提取列表
openclaw "提取评论列表"

提取方法:

# 文本
title = browser.extract_text("h1")

# 链接
links = browser.extract_all("a", attr="href")

# 表格
table_data = browser.extract_table(".data-table")

# 列表
comments = browser.extract_all(".comment")

🔍 元素定位技巧

1. CSS 选择器

# ID
browser.find("#login-btn")

# Class
browser.find(".btn-primary")

# 标签
browser.find("input")

# 属性
browser.find("input[type='text']")

# 组合
browser.find("form .btn.submit")

2. XPath

# 文本匹配
browser.find("//button[text()='登录']")

# 属性匹配
browser.find("//input[@name='username']")

# 位置
browser.find("(//li)[3]")

3. 语义化定位

# 按钮文本
browser.find_button("提交")

# 链接文本
browser.find_link("下一页")

# 标签文本
browser.find_label("用户名")

⚠️ 常见问题

问题 1:元素找不到

原因:

  • 页面未完全加载
  • 选择器错误
  • 元素在 iframe 中

解决:

# 等待加载
browser.wait_for_element(".target", timeout=10)

# 检查选择器
browser.debug_selector(".target")

# 切换 iframe
browser.switch_to_frame("iframe-name")

问题 2:操作失败

原因:

  • 元素被遮挡
  • 权限不足
  • 网络问题

解决:

# 滚动到元素
browser.scroll_to(".target")

# 强制点击
browser.click(".target", force=True)

# 重试
browser.retry(3, lambda: browser.click(".btn"))

问题 3:验证码处理

方案:

  1. 人工介入 - 暂停等待人工输入
  2. 打码平台 - 接入第三方服务
  3. 绕过 - 寻找免验证方式
# 暂停等待
browser.pause("请输入验证码")

# 或者使用打码平台
captcha = browser.extract(".captcha")
code = captcha_solver.solve(captcha)
browser.type(".captcha-input", code)

📊 性能优化

1. 批量操作

# 低效:逐个操作
for url in urls:
    browser.open(url)
    browser.wait(2)

# 高效:批量打开
browser.open_all(urls, concurrent=5)

2. 缓存页面

# 启用缓存
browser.enable_cache()

# 使用缓存
page = browser.get_cached("https://example.com")

3. 无头模式

# 无头模式(不显示界面)
browser = Browser(headless=True)

# 适合服务器环境

🎯 最佳实践

1. 错误处理

try:
    browser.click(".btn")
except ElementNotFound:
    logger.warning("按钮未找到")
except TimeoutError:
    logger.error("操作超时")
finally:
    browser.close()

2. 日志记录

browser.enable_logging("debug")
browser.log_action("click", ".btn")

3. 资源清理

# 使用上下文管理器
with Browser() as browser:
    browser.open("https://example.com")
    # 自动清理

# 或手动清理
browser.close()
browser.clear_cache()

📚 本系列预告

期数主题状态
第 1 期OpenClaw 是什么✅ 已完成
第 2 期Ubuntu 安装教程✅ 已完成
第 3 期自动发布 CSDN✅ 已完成
第 4 期浏览器自动化已完成
第 5 期AI 定时任务系统下一篇
第 6 期OpenClaw + Feishu待发布
第 7 期源码解析待发布

💬 互动话题

  1. 你最想用浏览器自动化做什么?
  2. 遇到过什么自动化难题?
  3. 需要什么功能的详细教程?

欢迎在评论区留言!


觉得有用?点赞 👍 收藏 ⭐ 关注 ➕ 三连支持一下!