让AI自动操作浏览器完成任务,一直是自动化领域的热门方向。最近有一个叫browser-harness的项目在GitHub上火了,星标突破13000。它的核心卖点是”自愈”——当网页元素变化时,Agent能自动适应,而不是直接报错。
browser-harness是什么
browser-harness是一个浏览器自动化框架,专门为LLM(大语言模型)设计。它让你可以用自然语言描述任务,然后由AI Agent自动操作浏览器完成。
项目的核心特点:
- 自愈能力:当网页元素变化时(比如按钮位置移动、CSS类名改变),Agent能自动找到新的元素,而不是直接失败
- LLM驱动:使用大语言模型来理解任务和网页内容,而不是传统的XPath/CSS选择器
- 多模型支持:支持Claude、GPT-4、DeepSeek等多种模型
- Python实现:使用Python编写,易于集成到现有项目
- Playwright底层:基于Playwright浏览器自动化库,支持Chrome、Firefox、Safari
为什么需要”自愈”能力
传统的浏览器自动化(如Selenium、Playwright直接使用)有一个核心痛点:元素定位脆弱。
假设你写了一个自动化脚本,通过XPath定位”登录”按钮:
driver.find_element(By.XPATH, '//button[@id="login-btn"]')
这个脚本可能今天能用,但明天网站改版后,按钮的ID变成了”btn-login”或者干脆没有ID了,脚本就报错了。
browser-harness的解决方案是:不让Agent依赖固定的元素定位器,而是让LLM”看”网页的内容,然后决定点击哪里。这样即使网页结构变了,只要人类能找到的元素,AI也能找到。
工作原理
browser-harness的工作流程大致如下:
- 接收任务:用户用自然语言描述要完成的任务
- 打开网页:Agent打开目标网页
- 分析页面:将网页的DOM结构发送给LLM,让LLM理解页面内容
- 规划步骤:LLM根据任务和页面内容,规划操作步骤
- 执行操作:Agent按照LLM的规划执行点击、输入、滚动等操作
- 验证结果:检查操作结果是否符合预期
- 自愈重试:如果操作失败,重新分析页面并尝试其他方法
快速上手
安装
pip install browser-harness
playwright install
基本使用
from browser_harness import BrowserHarness
harness = BrowserHarness(
model="claude-sonnet-4-20250514",
api_key="your-api-key"
)
result = harness.run(
url="https://example.com",
task="找到搜索框,输入Python教程,然后点击搜索按钮"
)
print(result)
自愈能力的实际表现
我测试了browser-harness的自愈能力:
测试1:按钮位置变化
在一个测试页面上,我将”提交”按钮从页面底部移到了顶部。browser-harness成功找到了新位置的按钮并点击。
测试2:元素属性变化
我将一个输入框的placeholder从”请输入用户名”改成了”Username”。browser-harness仍然能识别这是一个用户名输入框。
测试3:页面结构重构
我完全重新设计了一个表单页面的布局。browser-harness需要多次重试,但最终还是完成了任务。
使用场景
browser-harness适合以下场景:
- 自动化测试:UI自动化测试,不需要维护大量的元素定位器
- 数据采集:从网页中提取信息,自动适应网页结构变化
- RPA流程:自动化重复的网页操作流程
- 竞品监控:定期检查竞争对手网站的变化
- 表单填写:自动填写复杂的在线表单
与其他工具的对比
| 特性 | browser-harness | Selenium | Playwright |
|---|---|---|---|
| 元素定位 | LLM智能识别 | XPath/CSS | XPath/CSS |
| 自愈能力 | 强 | 无 | 无 |
| 学习曲线 | 低(自然语言) | 中等 | 中等 |
| 速度 | 较慢(需要LLM推理) | 快 | 快 |
| 成本 | 需要API费用 | 免费 | 免费 |
局限性
- 速度较慢:每次操作都需要LLM推理,比传统的直接定位慢很多
- API成本:需要调用LLM API,会产生费用
- 复杂页面挑战:对于非常复杂的页面(大量iframe、动态加载),可能会遇到困难
- 隐私考虑:网页内容会发送到LLM提供商,需要注意敏感信息
总结
browser-harness代表了浏览器自动化的一个新方向——用LLM的智能来替代脆弱的元素定位器。虽然速度和成本不如传统方案,但它的稳定性和易用性是传统方案无法比拟的。
如果你的自动化任务需要处理不稳定的网页,或者你不想花大量时间维护元素定位器,browser-harness值得一试。
项目地址:github.com/browser-use/browser-harness


















暂无评论内容