选择Playwright还是浏览器代理?为何脚本自动化仍更具优势
Playwright脚本与MCP驱动的浏览器代理:脆弱性、确定性及成本,同一发票处理任务在两种方式下的表现,安全风险以及各自的适用场景。
来源: Playwright vs WebMCP: Will Browser Automation Survive the Agent Era?
网页最初是为人们点击链接和阅读页面而设计的。Selenium、Puppeteer和Playwright则让代码来执行点击操作。十多年来,浏览器自动化意味着要编写脚本,详细列出每一步操作,然后反复运行。如今,AI智能体正在改变这一状况。它们能够进行推理、规划并采取行动,还能像人类一样浏览页面:查看内容、理解其含义、决定下一步该做什么。这就引出了一个关键问题:模型上下文协议(MCP)是否会让基于脚本的自动化变得过时,还是Playwright依然有存在的价值?
为什么开发者喜欢Playwright
由微软开发的Playwright是一种现代的浏览器自动化框架。使用该框架编写的代码可以驱动Chromium、Firefox或WebKit来点击按钮、填写表单、抓取数据以及运行端到端测试。以下是一个简短的示例:
const { chromium } = require('playwright');
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com/login');
await page.fill('#email', 'user@example.com');
await page.fill('#password', 'secret');
await page.click('button[type="submit"]');
await page.waitForURL('**/dashboard');
console.log('Logged in!');
await browser.close();
其结果清晰、确定且可预测。它广受欢迎的原因如下:
- 内置跨浏览器支持。
- 测试隔离与并行运行功能极为可靠。
- 自动等待功能取代了传统的
sleep(2000)写法。 - 支持追踪、截图及视频录制功能。
- 可轻松集成到 CI/CD 流水线中。
在质量保证自动化、回归测试以及脚本化网页工作流领域,它堪称行业标准。
脚本的局限性
其缺点在于脆弱性。只要更改按钮的CSS类,脚本就会失效;移动表单字段也会导致故障;即便推出采用新布局的A/B测试版本,依然会出问题。每个脚本都是对页面某一时刻外观的固定假设映射,而用户界面始终在变化。在发展迅速的公司中维持庞大的Playwright脚本套件,几乎等同于另一份全职工作。
打个比方有助于理解:脚本就像一张城市导览的层压卡片,只要道路未封闭、建筑未搬迁或没有单行道出现,它就能正常使用。而更好的导航工具则会观察周围环境、阅读路标,并实时调整路线。
MCP的贡献
MCP是由Anthropic在2024年底推出的开放标准,旨在以结构化方式将Claude等AI模型与外部工具、数据源及环境连接起来。它相当于一种通用的智能体插件系统。模型无需局限于聊天窗口内,便可访问数据库、API、文件系统以及网页浏览器。
目前已有Playwright MCP服务器,它将浏览器操作转化为智能体可调用的函数。开发者只需编写类似这样的代码:
await page.click('#submit-button');
代理会收到一个目标:
"Submit the contact form on acme.com with the user's name and email"
它通过视觉识别、HTML解析和推理能力来导航、定位元素并与页面交互,全程无需任何硬编码的选择器。
直接对比
Playwright:传统方法
- 控制方式:开发者需编写每一步操作。
- 选择器:CSS、XPath或文本。
- 对UI变化的适应性:UI发生变化时会导致程序失效。
- 设置复杂度:中等,因为需要编写代码。
- 确定性:完全确定性强。
- 调试难度:较低,有追踪日志和截图辅助。
- 速度:较快。
- 成本:仅涉及计算资源。
- 最佳适用场景:回归测试及CI/CD流水线。
- 可靠性:若得到妥善维护则较高。
WebMCP或Playwright MCP:智能代理方法
- 控制方式:由AI代理进行推理并做出决策。
- 选择器:自然语言结合视觉理解。
- 对界面变化的适应能力:通过基于当前DOM重新推理来调整。
- 设置成本:较低,只需描述目标即可。
- 确定性:非确定性,因为涉及大语言模型的推理过程。
- 调试难度:较高,因为需要探究智能体为何选择该操作。
- 速度:由于大语言模型推理的开销,速度较慢。
- 成本:包括计算资源消耗以及大语言模型API调用费用。
- 最适合的场景:动态任务、复杂工作流及智能体应用。
- 可靠性:正在提升,但尚未达到生产级标准。
同一任务,两种方法
任务内容:登录SaaS控制面板,找到最新的发票并将其下载为PDF格式。
使用Playwright时,脚本会导航至登录页面,通过data-testid选择器填写邮箱和密码,点击登录按钮,然后逐步执行后续操作。
await page.goto('https://app.saas.com/login');
await page.fill('[data-testid="email"]', credentials.email);
await page.fill('[data-testid="password"]', credentials.password);
await page.click('[data-testid="login-btn"]');
await page.waitForSelector('.dashboard');
await page.click('nav >> text=Billing');
await page.click('.invoice-list tr:first-child .download-btn');
await page.waitForEvent('download');
试想一下,在代码重构时如果重命名了data-testid属性,或者账单导航被移到了侧边栏,又或者发票表格的分页方式发生变化,会出现什么情况。
在有代理的情况下,指令会以通俗的语言形式呈现为一个目标:
Goal: "Go to app.saas.com, log in with my credentials,
navigate to billing, find the most recent invoice,
and download it as a PDF."
该代理会加载页面并读取DOM结构与视觉布局,通过语义识别出登录表单,填写凭证后提交。接着它会查找标有“账单”“发票”等字样的导航选项,按日期找到最新的发票并点击下载。如果用户界面发生变化,它会重新读取页面并作出相应调整,无需更新任何脚本。
从脚本编程到指令驱动
传统的自动化技术会明确要求计算机执行哪些具体步骤,而代理时代的自动化技术则关注期望达到的结果,以及人工智能是否能够自行找到相应的步骤。换句话说,脚本编程负责规划路径,而指令驱动则负责设定目标。
对于那些简单、稳定、处理量大的任务,比如在持续集成环境中进行10,000次回归测试,Playwright的确定性优势始终明显。而对于那些复杂、多变、需要一次性完成的流程,类似人类助手会处理的任务,通过MCP驱动的浏览器代理则表现更为出色。
此区域出现的工具
该生态系统发展迅速:
- Playwright MCP,一种官方MCP服务器,可将Playwright浏览器操作功能提供给AI智能体。
- Browserbase推出的Stagehand,一种结合了Playwright与LLM视觉功能的原生AI自动化工具。
- Browser Use,用于构建网页浏览智能体的开源框架。
- Anthropic的Claude Computer Use,能够查看并控制整个桌面或浏览器的系统。
- OpenAI Operator,一种能够通过浏览网页来完成任务的GPT-4o智能体。
- Skyvern,一种基于视觉识别与LLM的自动化工具,无需使用选择器即可工作。
这些并非玩具,各公司将其应用于采购流程、数据提取、表单提交以及竞争对手监控等领域,而这些工作原本可能需要数月的脚本编写时间。
Playwright会消失吗?
不会,不过它的角色正在发生变化。它依然非常重要,但已不再是唯一的工具。它类似于SQL:在处理结构化任务时具有基础性、精确性且不可替代,但已不再是获取答案的唯一途径。未来会针对不同任务选择合适的处理方式。
如何在这两者之间做选择
决策过程可以按照流程图来进行。首先判断任务是否具有明确的定义和稳定的用户界面。如果是,并且需要在大规模环境中重复执行,比如在持续集成或回归测试中,那么脚本是最佳选择。如果用户界面会变化或任务只是偶尔执行一次,那么使用自动化代理会更合适。
Is the task well-defined with a stable UI?
│
├── YES → Does it run repeatedly at scale (CI/CD, regression)?
│ │
│ ├── YES → Use Playwright
│ └── NO → Either works; Playwright is cheaper
│
└── NO → Is the UI dynamic, unknown, or frequently changing?
│
├── YES → Use MCP Agent / AI Browser
└── NO → Does it require multi-step reasoning?
│
├── YES → Use MCP Agent
└── NO → Use Playwright
未来两年
自动化工具不会一夜之间取代脚本化流程,但已有几大趋势显现。
- 混合式流程变得普遍。 Playwright可处理那些稳定且重复的80%任务,而MCP代理则负责处理每轮迭代中那些会破坏脚本的不可预测的20%任务。
- Playwright将获得AI功能。 可以期待出现选择器修复功能,即当某个选择器失效时,它会请求大语言模型在更新后的页面中找到对应的元素。Healenium和Reflect已经实现了类似功能,Playwright也很可能提供原生支持。
- 代理的可靠性提升。 目前的代理有时会误读页面、点击错误的元素,或被弹窗干扰。像GPT-4o、Claude 3.5 Sonnet和Gemini 2.0这样的更先进的多模态模型应该能大幅减少这类故障。
整体视角
十年来,浏览器自动化一直是个“翻译”问题:如何将人类的意图转化为能够模拟人类操作的代码。Playwright出色地解决了这一问题。如今,自动化工具已省去了这一翻译步骤,因为用通俗语言表达的意图就已足够,后续工作由工具自行处理。但这并不意味着Playwright过时了,它只是变得更加专业化,就如同在机器人手术时代外科医生依然会使用手术刀一样。手术刀能提供精确度、控制力与可靠性,而机器人则能处理复杂任务、具备适应性并实现大规模操作。现在的实际问题不再是Playwright与MCP谁更优,而是何时需要手术刀,何时需要机器人。
相关阅读
- WebMCP详解:为浏览器AI智能体提供工具而非依赖猜测 — WebMCP允许网页为AI智能体声明所需工具。文中介绍了如何注册这些工具、标注风险、在Chrome中测试及处理安全问题,同时还说明了2026年各浏览器的支持情况。
- Hyperbrowser MCP在实际应用中的表现:升级机制、数据传输方式与安全保障 — Hyperbrowser MCP为浏览器智能体带来了哪些功能,其默认的HTTP和SSE机制存在哪些不足,以及仍需使用的策略网关、审批流程和用户配置控制功能。