首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Playwright MCP 和 CLI 到底怎么选?微软官方的答案,藏在一句话里

Playwright MCP 和 CLI 到底怎么选?微软官方的答案,藏在一句话里

原创
作者头像
AI智享空间
发布于 2026-10-27 17:11:07
发布于 2026-10-27 17:11:07
2511
举报
文章被收录于专栏:效能提升效能提升软件测试

同一个 Playwright,微软给 AI 开了两扇门。选错的代价不是"不能用",而是上下文被撑爆、成本飙升,或者 AI 在关键时刻看不见页面。本文用官方说明和可复现的操作,讲清楚什么时候用哪个。


图片
图片

一、为什么选错会踩坑

1.1 一个很多人撞过的坑

你让 AI 帮你跑一个浏览器测试。前几步很顺,页面打开了、表单填了、按钮点了。再往后,它开始反复问同一个页面的结构,回答越来越短,最后干脆忘了前面做过什么。

这类问题,大多不是模型"变笨"了,而是上下文被塞满了。页面的结构数据、工具的说明、每一步的返回,全都堆在对话里,留给你的代码、测试和推理的空间越来越小。

微软把 Playwright 做成了两种给 AI 用的形态:Playwright MCP 和 Playwright CLI。两者驱动的是同一个 Playwright,区别在于"AI 通过什么接口去碰浏览器"。这个区别,恰好决定了上面那个坑你会不会踩。

1.2 官方的答案:一句话,两个方向

两个仓库的 README 开头,用几乎相同的文字回答了"该用哪个"。我用自己的话转述:

  • CLI 的定位:如果你在用编码智能体(Claude Code、GitHub Copilot 这类),CLI 加 Skills 是更合适的选择。原因是命令调用更省 token,它不会把庞大的工具说明和冗长的页面无障碍树塞进模型上下文,智能体可以用简洁的命令完成操作,把宝贵的上下文留给大型代码库、测试和推理。
  • MCP 的定位:MCP 仍然有它的位置,适合那些需要持久状态、丰富的页面内省、对页面结构反复推理的专门场景,比如探索式自动化、自愈测试、长时间自主运行的流程。在这些场景里,持续保持浏览器上下文比省 token 更重要。

把这两段压缩成一句话:

写代码、跑测试,用 CLI;让 AI 持续"盯着页面想事情",用 MCP。


二、本质区别与选型判断

2.1 本质区别:浏览器状态放在哪里

两者的核心差别,一句话就能说清:页面状态放在哪。

Playwright MCP

Playwright CLI

接入方式

MCP 服务,任何支持 MCP 的客户端都能用(VS Code、Cursor、Windsurf、Claude Desktop 等)

命令行工具,需要智能体有 shell 和文件系统(如 Claude Code、Copilot)

页面状态

通过工具返回,进入模型上下文

每条命令后给出快照文件的位置,AI 需要时再读

默认运行方式

有头(能看到浏览器)

无头(需要看时加 --headed)

会话

由 MCP 服务维护连续上下文

用 -s=名称管理多个命名会话,list、show 查看

官方推荐场景

探索式、自愈、长时间自主流程

编码智能体里的测试编写与执行

用 CLI 时你会看到这样的输出:每条命令之后,返回的是一个快照文件的路径,而不是整页的结构树。AI 想细看,就去读文件,或者用 playwright-cli find "关键词"在快照里搜索,只取需要的片段。

2.2 什么时候用 CLI

1. 你在编码智能体里写、跑、调试 Playwright 测试。这是 CLI 的主场。官方 Skills 里直接带了几类参考指南:运行和调试测试、请求拦截、保存与恢复登录状态、测试的计划、生成与修复、追踪、录视频。

2. 上下文很紧张。你的智能体既要读大型代码库,又要看测试,还要推理,每一点上下文都珍贵。

3. 要进流水线,或者要留下可复查的产物。 CLI 的命令容易写进脚本,截图、追踪、视频、快照文件都落在磁盘上,出了问题可以回头看。

4. 要同时开多个浏览器。 命名会话加 playwright-cli show的可视化面板,可以一眼看到所有在后台跑的会话,必要时还能接管操作。

2.3 什么时候用 MCP

1. 你的客户端没有 shell。 比如聊天式的客户端。CLI 需要智能体能执行命令,没有这个条件,只能走 MCP。

2. 探索式测试。你不知道页面长什么样,也不知道有什么坑,需要 AI 每走一步就看一眼页面,再决定下一步。持续的页面上下文在这里是价值,不是负担。

3. 需要丰富的内省能力。 MCP 通过能力开关提供了网络请求拦截、存储读写、开发者工具、断言验证、生成定位器等工具,按需开启。

4. 长时间自主运行的流程。浏览器上下文需要一直保持,中间不能断。

2.4 三个常见误区

误区一:"MCP 已经过时了。"不是。官方原话是它"仍然适用"于特定场景,两者是分工关系,不是替代关系。

误区二:"要连接已登录的浏览器,只能用 MCP。"两边都能做。MCP 有 --extension参数,通过浏览器扩展连接已打开的 Edge 或 Chrome;CLI 同样有 attach --extension=chrome 和 attach --cdp=...。别拿这一点做选择依据。

误区三:"MCP 一定很费 token。"默认配置下页面快照会随响应返回,确实偏重。但 MCP 也提供了瘦身手段:--snapshot-mode可设为不返回快照,快照工具支持限制深度和保存为文件,还有在快照里搜索的 browser_find,以及用 --caps只开启需要的能力。选 MCP 不等于接受默认配置。


三、两个实战案例

3.1 案例一:用 CLI,让 AI 为 TodoMVC 写并跑 E2E

这是官方 README 里的演示场景,你可以完整复现。

准备:

代码语言:javascript
复制
npm install -g @playwright/cli@latest
playwright-cli install --skills# 把 Skills 装进智能体的工作流

给智能体的提示词(官方示例的中文版):

代码语言:javascript
复制
使用 playwright-cli 测试 https://demo.playwright.dev/todomvc/ 的"添加待办"流程。
成功和失败的场景都要截图。
可用命令请查看 playwright-cli --help。

智能体实际在做的事,你也可以手动敲一遍(来自官方演示):

代码语言:javascript
复制
playwright-cli open https://demo.playwright.dev/todomvc/ --headed
playwright-cli type "Buy groceries"
playwright-cli press Enter
playwright-cli type "Water flowers"
playwright-cli press Enter
playwright-cli check e21          # e21 是快照里元素的引用编号
playwright-cli screenshot

这个案例说明了什么:整个过程里,AI 面对的是"命令加文件"。页面的完整结构只在需要时才被读取,大部分上下文留给了测试本身。而且每一步都是可复现的命令,你可以把它沉淀成脚本。

3.2 案例二:用 MCP,让 AI 当探索测试员

场景:一个改版频繁、没有测试文档的页面。你不想先写脚本,想让 AI 先"摸一遍",找出哪里值得测。

配置(官方标准配置,加上断言验证能力):

代码语言:javascript
复制
{
  "mcpServers":{
    "playwright":{
      "command":"npx",
      "args":["@playwright/mcp@latest","--caps=testing"]
    }
  }
}

Claude Code 用户也可以直接用 claude mcp add playwright npx @playwright/mcp@latest。

提示词:

代码语言:javascript
复制
你是探索式测试员。请打开注册页,先观察页面结构,列出所有表单项和可交互控件。
然后逐项尝试:空提交、超长输入、特殊字符、重复提交。
每发现一个异常,记录现象、复现步骤和页面当时的状态。不要修改任何代码。

为什么这里适合 MCP:AI 每一步都要基于当前页面决定下一步,持续保持页面上下文是必要的。开启 testing能力后,它还能使用生成定位器、验证文本和元素可见性等工具,把探索中确认的东西固化下来。

一条我建议你记住的工作流(个人判断):

探索阶段用 MCP,回归阶段用脚本。

MCP 能生成定位器,也能把你手动演示的操作录成 Playwright 代码。把探索得到的结果沉淀成普通测试脚本,放进 CI 里稳定地跑。不要让 AI 每天晚上"现场探索"一遍当回归测试:它慢、贵、不可复现,而且每次可能走不同的路。


四、安全与踩坑

  1. MCP 不是安全边界。 官方明确说明,它不应被当作安全隔离手段。来源限制、密钥文件这类配置只是便利功能,不是防线。
  2. 有一个危险工具要留意。 MCP 里的browser_run_code_unsafe可以在服务进程里执行任意 JavaScript,官方描述为等同于远程代码执行。给智能体授权时,别把它当普通工具放行。
  3. 别拿日常浏览器做自动化。 通过扩展连接已登录的浏览器,意味着 AI 能碰到你真实的登录会话。自动化请用专用测试账号和隔离的配置。
  4. 并发会冲突。 MCP 的持久化配置同一时间只能被一个浏览器实例使用,多个客户端同时跑要加--isolated,或指定不同的--user-data-dir。CLI 则默认把配置放在内存里,需要保留时加--persistent。
  5. CLI 同样能执行任意代码。 它的eval和run-code命令威力不小,在共享环境里同样要控制权限。

五、决策方法与行业趋势

遇到选择困难时,按顺序问自己:

  1. 你的智能体有 shell 和文件系统吗? 没有,选 MCP。
  2. 任务是"写、跑、修测试代码",还是"让 AI 探索页面"? 前者 CLI,后者 MCP。
  3. 上下文紧不紧?要不要进 CI? 紧、要进,选 CLI。

两个都符合?用我上面的组合:MCP 探索,沉淀成脚本,CLI 或普通 Playwright 回归。

更靠谱的办法是拿你自己的真实任务各跑一次,用你所用工具的用量统计,对比两种方式消耗的上下文。别人的数字,永远替代不了你项目里的数字。

写在最后

这种"命令行加技能"的形态,正在成为 AI 操作测试对象的一种通用做法。AltTester 给游戏测试做的 CLI,就明确把动机说成:让智能体不必理解图形界面,直接用结构化的命令操作;同时它也提供 MCP 和 Skills 两种接入方式。同一个能力,同时提供命令行和 MCP 两种接口,让用户按场景选,已经是工具厂商的共识。

选工具不必站队。问清楚"我的智能体长什么样、我的任务是什么",答案自然就出来了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、为什么选错会踩坑
    • 1.1 一个很多人撞过的坑
    • 1.2 官方的答案:一句话,两个方向
  • 二、本质区别与选型判断
    • 2.1 本质区别:浏览器状态放在哪里
    • 2.2 什么时候用 CLI
    • 2.3 什么时候用 MCP
    • 2.4 三个常见误区
  • 三、两个实战案例
    • 3.1 案例一:用 CLI,让 AI 为 TodoMVC 写并跑 E2E
    • 3.2 案例二:用 MCP,让 AI 当探索测试员
  • 四、安全与踩坑
  • 五、决策方法与行业趋势
  • 写在最后
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档