下面按“通用浏览器自动化库”和“更贴近 Agent(LLM)操作浏览器的封装/环境”两类整理一些开源选择,并附上适用场景建议。
1) 通用、成熟的开源浏览器自动化库(Agent 常用底座)
Playwright(推荐作为 Agent 底座)
- 语言:Node.js / Python / Java / .NET
- 特点:跨 Chromium/Firefox/WebKit;等待与并发更友好;定位能力强(text/role/aria 等);支持 trace、视频、HAR。
- 对 Agent 友好点:
- 可拿到 DOM、可做截图(视觉 agent)、可通过 ARIA/role 提升稳定定位(比纯 CSS 更稳)。
- 常见用法:网页任务自动化、Agent 工具调用、端到端流程。
Selenium(生态最大)
- 语言:几乎全覆盖(Python/Java/C#/JS/…)
- 特点:基于 WebDriver 标准;对各种浏览器/企业环境兼容性强。
- 对 Agent 友好点:成熟、资料多;但在现代 SPA、等待/稳定性上通常不如 Playwright 省心。
Puppeteer
- 语言:Node.js(也有社区 Python 版,但主力是 Node)
- 特点:Chromium/Chrome 优先,走 CDP;上手快。
- 对 Agent 友好点:控制 Chrome 非常直接;但跨浏览器能力弱于 Playwright。
WebdriverIO(基于 WebDriver 的 Node 框架)
- 特点:插件/生态丰富,适合 Node 技术栈;能对接 Selenium Grid 等。
- 对 Agent 友好点:如果你的 Agent 运行在 Node 且要复用 WebDriver 基建,这是不错的选择。
Robot Framework + SeleniumLibrary(偏 RPA/测试编排)
- 特点:关键字驱动,适合把“浏览器操作”包装成可读性强的流程。
- 对 Agent 友好点:Agent 生成/修改关键字脚本,比直接写代码更可控(取决于团队偏好)。
2) 更贴近“Agent 操作浏览器”的开源封装/环境(更高层的动作抽象)
> 这类通常在 Playwright/Selenium 之上,提供:更高层动作(点击/输入/找元素)、页面状态提取(DOM/可访问性树/截图)、甚至为 LLM 准备的工具接口。
browser-use(Python,常被用来做 LLM Web Agent)
- 定位:给 LLM/Agent 一个“能理解网页并执行动作”的封装(底层多用 Playwright)。
- 优势:更贴近“让模型自己浏览网页”的用法(自动提取页面信息、生成可执行动作)。
- 注意:这类项目迭代快,稳定性/反爬对抗要看具体版本与站点。
WebArena / BrowserGym(研究/评测与训练环境,开源)
- 定位:为“网页任务型 Agent”提供标准化环境/任务/评测(通常配套浏览器控制脚本)。
- 优势:如果你做的是 Agent 能力评测、训练、benchmark,它们很合适。
- 注意:更偏研究与环境构建,不一定直接等同于生产级 RPA。
LangChain / LlamaIndex 等的浏览器工具封装(多为开源组件)
- 定位:把 Playwright/Selenium 包成 Tool(如“navigate / click / extract”)给 Agent 调用。
- 优势:你已经在用这些 Agent 框架时,上手快、可组合其它工具(搜索、数据库、API 等)。
- 注意:不同版本/组件质量差异较大;很多仍是“薄封装”,核心稳定性仍取决于 Playwright/Selenium。
3) 更底层:直接走 Chrome DevTools Protocol(CDP)
如果你要“更细粒度”控制(网络拦截、性能、覆盖率、模拟设备等),可以直接用 CDP 客户端库:- chrome-remote-interface(Node)
- pychrome(Python)
- 以及 Playwright/Puppeteer 本身也大量基于 CDP 能力(一般不需要自己再封一层)
4) 选型建议(面向 Agent)
- 想要稳、通用、易并发:优先 Playwright(再按需封装成 Agent 的工具层)。
- 已有 Selenium 基建/企业浏览器兼容要求强:选 Selenium/WebDriver。
- 只盯 Chrome、想走 CDP、Node 栈:选 Puppeteer 或直接 CDP。
- 想要“开箱即用的 LLM 浏览器 Agent”体验:看 browser-use 这类高层封装(但要预期维护成本/站点适配)。