Google 开源浏览器自动化新工具:Gemini Computer Use Preview 完全指南
引言:浏览器自动化的新纪元
在 Web 开发和测试领域,浏览器自动化一直是一个既重要又令人头疼的话题。多年来,开发者们依赖 Selenium、Puppeteer 等工具来完成网页自动化任务,但这些传统工具存在着明显的痛点:需要精确定位 DOM 元素、代码维护成本高、网页改版后脚本容易失效。
如今,源码七号站为大家带来一个振奋人心的消息:Google 在 GitHub 上开源了一个革命性的项目——Computer Use Preview。这个项目基于 Gemini 2.5 Pro 模型,通过视觉识别技术,让浏览器自动化从"盲人摸象"进化到"睁眼看世界"。
传统自动化的困境
开发者面临的三大难题
在深入了解新工具之前,让我们先回顾一下传统浏览器自动化存在的问题:
1. 元素定位的复杂性
使用 Selenium 或 Puppeteer 时,开发者需要:
- 打开浏览器开发者工具
- 检查网页源码
- 查找元素的 ID、Class 或 XPath
- 编写精确的选择器代码
# 传统方式:需要精确的选择器
driver.find_element_by_id("submit-button").click()
driver.find_element_by_css_selector(".form-input[name='email']").send_keys("test@example.com")
这个过程不仅繁琐,而且容易出错。
2. 维护成本居高不下
网站 UI 的任何改动都可能导致自动化脚本失效:
- CSS 类名变更
- HTML 结构调整
- 动态加载元素的时序变化
- JavaScript 框架版本升级
一次小小的网页改版,可能需要重写大量的自动化代码。
3. 动态内容处理困难
现代 Web 应用大量使用:
- AJAX 异步加载
- 单页应用(SPA)
- 虚拟滚动
- 懒加载图片
传统工具需要添加大量等待逻辑和条件判断,代码复杂度急剧上升。
Computer Use Preview:视觉驱动的自动化
核心理念:模拟人类操作
Google 的 Computer Use Preview 采用了一个全新的思路:既然人类可以通过视觉识别来操作网页,为什么 AI 不能?
这个工具的工作流程可以概括为三个步骤:
1. 截图(Capture)
- 对当前网页进行全屏截图
- 捕获页面的视觉状态
2. 分析(Analyze)
- 利用 Gemini 2.5 Pro 的视觉能力
- 识别页面上的各种 UI 元素
- 理解元素的功能和位置关系
3. 行动(Action)
- 根据任务指令决定下一步操作
- 执行点击、输入、滚动等动作
- 验证操作结果
关键技术优势
视觉理解能力
Gemini 2.5 Pro 模型具备强大的视觉分析能力,能够:
- 识别按钮、输入框、下拉菜单等 UI 组件
- 理解文本内容和语义
- 判断元素的可交互性
- 适应不同的网页设计风格
自适应能力
相比传统的基于 DOM 的定位方式,视觉识别具有更强的鲁棒性:
- 不依赖 HTML 结构
- 不受 CSS 类名变化影响
- 能处理 Canvas、SVG 等特殊元素
- 适应响应式设计的布局变化
智能决策
基于大语言模型的推理能力,工具可以:
- 理解复杂的任务指令
- 制定多步骤操作计划
- 处理异常情况
- 自主纠错和重试
性能基准测试:领先同类产品
在 WebVoyager 基准测试中,Computer Use Preview 展现出了卓越的性能。这个测试专门用于评估 AI 代理完成真实网页任务的能力。
测试结果对比
|
模型/工具 |
任务完成率 |
性能表现 |
|
Gemini 2.5 Pro + Computer Use |
69% |
优秀 |
|
OpenAI Operator |
61.3% |
良好 |
|
Claude Sonnet 4.5 |
55% |
中等 |
69% 的完成率意味着什么?
- 在 100 个复杂的网页任务中,能够成功完成 69 个
- 相比竞争对手有明显的领先优势
- 在处理多步骤、跨页面任务时更加可靠
- 降低了任务"翻车"的风险
这个成绩的取得得益于:
- Gemini 2.5 Pro 强大的视觉理解能力
- 精心设计的提示词工程
- 优化的行动空间定义
- 鲁棒的错误处理机制
实际应用场景详解
源码七号站通过研究官方文档和示例代码,总结出以下几个典型应用场景。
场景一:跨网站数据迁移
需求描述
假设你需要:
- 从一个宠物登记网站获取加州地区的宠物信息
- 将这些信息录入到你的 CRM 系统
- 为每个宠物预约一个服务时间
传统实现方式
# 伪代码示例
# 步骤1:爬取源网站
pets_data = scrape_pet_registry("California")
# 步骤2:数据清洗和转换
for pet in pets_data:
formatted_data = transform_pet_data(pet)
# 步骤3:登录CRM系统
crm_login(username, password)
# 步骤4:填写表单
for pet in formatted_data:
fill_crm_form(pet)
schedule_appointment(pet, datetime)
这需要:
- 编写爬虫代码
- 处理数据格式转换
- 实现 CRM 系统的 API 对接
- 处理各种异常情况
使用 Computer Use Preview
只需一句指令:
"请访问宠物登记网站,筛选加州地区的宠物信息,然后把每条记录填入 CRM 系统,并为每只宠物预约明天下午2点的服务。"
工具会自动:
- 打开源网站
- 使用筛选功能定位加州地区数据
- 提取相关信息
- 切换到 CRM 系统
- 逐条填写表单
- 设置预约时间
整个过程无需编写一行代码。
场景二:视觉交互任务
需求描述
在一个项目管理看板上:
- 页面有多个颜色各异的便签
- 需要根据便签内容进行分类
- 将便签拖拽到对应的分类区域
挑战分析
这类任务对传统自动化工具极具挑战性:
- 便签位置随机
- 需要 OCR 识别便签内容
- 涉及复杂的拖拽操作
- 需要空间关系理解
Computer Use 的优势
基于视觉识别,工具可以:
- 识别文本:直接"看懂"便签上写的内容
- 理解分类:根据内容判断所属类别
- 精确定位:找到目标便签和目标区域的位置
- 执行拖拽:模拟鼠标拖拽操作
实现代码简洁明了:
# 使用 Computer Use Preview
python main.py --query "将所有关于'需求'的便签移动到'待办'区域,将'已完成'的便签移动到'完成'区域"
场景三:表单批量填写
需求描述
企业常见场景:
- 需要在多个系统中填写相似的表单
- 数据来源于 Excel 或数据库
- 表单结构略有差异
传统痛点
每个系统需要单独适配:
- 不同的字段名称
- 不同的必填项要求
- 不同的验证规则
- 不同的提交流程
智能化解决方案
Computer Use Preview 可以:
- 理解表单的语义("姓名"、"Name"、"用户名" 都能识别)
- 适应不同的表单布局
- 处理动态验证提示
- 自动重试失败的操作
快速上手指南
源码七号站为读者准备了两种体验方式,从零基础到高级部署,满足不同需求。
方式一:在线体验(推荐新手)
适合人群:想快速体验功能的用户
访问地址:
https://gemini.browserbase.com/
使用步骤:
- 打开浏览器访问上述网址
- 注册或登录 Browserbase 账号
- 在输入框中输入任务指令
- 观察 AI 如何执行任务
示例任务:
- "访问 GitHub trending 页面,找出今天最热门的 Python 项目"
- "在 Amazon 上搜索笔记本电脑,筛选价格低于 1000 美元的产品"
- "打开 Google Maps,搜索附近的咖啡店"
优势:
- 无需安装配置
- 即开即用
- 适合快速验证想法
限制:
- 数据存储在云端
- 可能有使用配额限制
- 定制化程度较低
方式二:本地部署(推荐开发者)
适合人群:
- 需要处理敏感数据的企业用户
- 希望深度定制的开发者
- 对性能和隐私有较高要求的项目
环境准备
系统要求:
- 操作系统:Linux、macOS 或 Windows(WSL2)
- Python 版本:3.8 或更高
- Node.js:14.x 或更高
- 磁盘空间:至少 2GB
依赖检查:
# 检查 Python 版本
python3 --version
# 检查 pip
pip3 --version
# 检查 Git
git --version
详细安装步骤
步骤 1:克隆项目
# 克隆 GitHub 仓库
git clone https://github.com/google-gemini/computer-use-preview.git
# 进入项目目录
cd computer-use-preview
步骤 2:创建虚拟环境
使用虚拟环境可以避免依赖冲突:
# 创建虚拟环境
python3 -m venv .venv
# 激活虚拟环境(Linux/macOS)
source .venv/bin/activate
# 激活虚拟环境(Windows)
.venv\Scripts\activate
激活成功后,命令行提示符前会出现 (.venv) 标识。
步骤 3:安装 Python 依赖
# 安装项目依赖
pip install -r requirements.txt
# 验证安装
pip list | grep playwright
步骤 4:安装浏览器驱动
Playwright 需要下载浏览器二进制文件:
# 安装 Chrome 浏览器驱动
playwright install chrome
# 如果需要其他浏览器
playwright install firefox
playwright install webkit
这一步可能需要几分钟时间,取决于网络速度。
步骤 5:配置 API 密钥
创建配置文件 .env:
# 创建环境变量文件
cat > .env << EOL
GEMINI_API_KEY=your_api_key_here
MODEL_NAME=gemini-2.5-pro
HEADLESS=false
EOL
获取 API 密钥:
- 访问 Google AI Studio
- 登录 Google 账号
- 创建新的 API 密钥
- 将密钥复制到
.env文件
基础使用示例
示例 1:简单的网页搜索
python main.py --query "访问 Google,搜索 '源码七号站'"
示例 2:数据提取
python main.py --query "打开 GitHub trending 页面,列出前5个 Python 项目的名称和简介"
示例 3:表单填写
python main.py --query "打开这个表单链接 [URL],填写姓名为'张三',邮箱为'zhangsan@example.com',然后提交"
示例 4:多步骤任务
python main.py --query "访问电商网站,搜索'无线鼠标',筛选价格100-200元的商品,将前3个商品的名称和价格保存到文件"
高级配置
自定义浏览器窗口大小
编辑 config.py:
BROWSER_CONFIG = {
"headless": False,
"viewport": {
"width": 1920,
"height": 1080
},
"slow_mo": 100 # 减慢操作速度,便于观察
}
设置超时时间
TIMEOUT_CONFIG = {
"page_load": 30000, # 页面加载超时(毫秒)
"action": 10000, # 单个操作超时
"navigation": 30000 # 导航超时
}
启用详细日志
export LOG_LEVEL=DEBUG
python main.py --query "your query" --verbose
常见问题排查
问题 1:Playwright 安装失败
症状:
Error: Failed to download browser
解决方案:
# 使用镜像源
export PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright/
# 重新安装
playwright install chrome
问题 2:API 密钥无效
症状:
Error: Invalid API key
解决方案:
- 检查
.env文件中的密钥是否正确 - 确认 API 密钥未过期
- 验证是否有 API 调用配额
问题 3:浏览器启动失败
症状:
Error: Could not launch browser
解决方案:
# 安装系统依赖(Ubuntu/Debian)
sudo apt-get update
sudo apt-get install -y \
libnss3 \
libatk-bridge2.0-0 \
libdrm2 \
libxkbcommon0 \
libgbm1
# 重新启动
python main.py --query "test"
技术架构深度解析
核心组件
1. 视觉感知层
# 伪代码:视觉感知流程
def capture_and_analyze(page):
# 截取当前页面
screenshot = page.screenshot(full_page=True)
# 使用 Gemini 分析
response = gemini.analyze_image(
image=screenshot,
prompt="识别页面上的所有可交互元素"
)
return response.elements
2. 决策推理层
基于大语言模型的推理能力:
def plan_actions(task, current_state):
prompt = f"""
当前任务:{task}
页面状态:{current_state}
请制定详细的操作步骤。
"""
plan = gemini.generate(prompt)
return parse_action_plan(plan)
3. 动作执行层
async def execute_action(action, page):
if action.type == "click":
await page.click(action.coordinates)
elif action.type == "type":
await page.keyboard.type(action.text)
elif action.type == "scroll":
await page.mouse.wheel(0, action.delta)
工作流程图
用户指令
↓
任务解析(理解用户意图)
↓
页面截图(获取视觉信息)
↓
元素识别(找到可交互对象)
↓
动作规划(制定操作步骤)
↓
执行操作(模拟用户行为)
↓
结果验证(检查是否成功)
↓
反馈调整(如需要则重试)
与传统方案对比
|
特性 |
Selenium/Puppeteer |
Computer Use Preview |
|
元素定位 |
DOM 选择器 |
视觉识别 |
|
维护成本 |
高(UI 变化需修改代码) |
低(自适应) |
|
学习曲线 |
陡峭(需要懂 HTML/CSS) |
平缓(自然语言) |
|
动态内容 |
需要等待逻辑 |
智能判断 |
|
跨页面任务 |
手动编排 |
自动规划 |
|
异常处理 |
手动编码 |
智能重试 |
实战项目案例
案例:自动化竞品价格监控
业务需求
电商运营团队需要:
- 每天监控 3 个竞争对手的产品价格
- 产品涉及 50 个 SKU
- 价格数据需要保存到 Excel
实现代码
import pandas as pd
from datetime import datetime
# 竞品网站列表
competitors = [
"https://competitor1.com",
"https://competitor2.com",
"https://competitor3.com"
]
# 产品列表
products = [
"iPhone 15 Pro",
"Samsung Galaxy S24",
"小米14 Ultra",
# ... 更多产品
]
results = []
for competitor in competitor