尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Playwright MCP:自然语言驱动浏览器自动化的新范式

Playwright MCP:自然语言驱动浏览器自动化的新范式 1. 先搞清楚Playwright MCP 到底是什么说起 Playwright做浏览器自动化的朋友都不陌生它是一个非常成熟的端到端测试框架支持 Chromium、Firefox、WebKit 三种内核能稳定地驱动浏览器执行点击、输入、跳转、断言、截图等操作。但过去我们写 Playwright 自动化都是先写脚本、定好选择器、跑一遍看结果整个过程是“人指挥代码”。而 MCPModel Context Protocol出现之后玩法发生了本质变化MCP 是一套标准协议让大模型能够直接调用外部工具、读取外部资源相当于给 AI 装上“手”和“眼睛”。当 Playwright 被包装成一个 MCP Server 之后AI 就能用自然语言指挥一个真实浏览器去完成各种页面操作。所以 Playwright MCP 的定位非常清晰它是连接“大模型”和“真实浏览器”的一座桥。有了它AI 不再只是对着文本回答问题而是能真正打开网站、搜索内容、点击按钮、填写表单、提取数据、监听网络请求甚至完成跨系统的数据搬运。对于做自动化测试、爬虫开发、运营数据处理、AI Agent 应用的人来说这是一套非常值得掌握的“自然语言驱动浏览器”的方案。这篇文章我不打算只讲概念我会把从环境安装、主流工具的接入配置、核心工具能力拆解到实际业务场景的编排再到常见坑的排查完整走一遍。无论你是刚接触 Playwright 的新手还是已经在搞 MCP 生态的老手都能在这里找到能直接用起来的东西。在开始动手之前先建立一个大框架。很多人一上来就纠结 MCP 的底层协议其实没必要。你只需要理解三个角色MCP Host 是承载大模型的客户端比如 Claude Desktop、Cursor、Codex CLI、Cherry Studio 这类软件MCP Server 是提供能力的服务端比如 Playwright MCP 就是一个 Server它把画布、点击、输入这些能力打包成一个个工具中间的 MCP 协议则负责双方的通信。打个比方Host 是老板Server 是员工协议是公司的流程规范老板说需求员工执行流程保证两边听得懂。在 MCP 生态里不同 Server 解决了不同的问题。比如 Figma MCP 能读取设计稿需要你在 Figma 后台获取 Personal Token因为它是通过 Figma API 鉴权去访问云端设计数据蓝湖 MCP 则是从蓝湖平台把设计标注转换成代码可参考的信息而 Playwright MCP 的思路不一样它不需要任何云端 Token它驱动的是你本地的真实浏览器拉取的是页面运行时状态所以无需额外鉴权、开箱即用。这种“本地优先”的设计让它在处理需要真实登录态、动态渲染、复杂交互的网页时比纯 API 型 MCP Server 要灵活得多。2. 为什么要用 MCP 方案它解决了传统脚本的三个痛点直接抛结论Playwright MCP 并不是要替代传统 Playwright 脚本而是补上了传统方案的几个短板。我用一个表格把两者的差异列出来看得更直观。对比维度传统 Playwright 脚本Playwright MCP驱动方式写死代码流程按脚本执行大模型根据上下文动态决定下一步动作元素定位需要手动选择器或测试 IDAI 通过页面快照自动识别可操作元素页面理解脚本看不到页面只能靠断言AI 能读取可访问性快照和截图动态调整会话状态需要自己管理 Cookie、存储状态有状态会话登录态可在多次调用间保持上手门槛需要写代码、懂框架、懂选择器自然语言描述需求即可典型场景回归测试、固定流程的批量操作探索式任务、需求不明的页面操作、智能体工作流我举一个实际场景。传统脚本模式下如果开发把某个按钮的 class 名改了你的page.click(.submit-btn)可能就废了测试开始报红你被迫去改选择器。而在 MCP 模式下AI 拿到页面快照发现页面上有个“提交”按钮会直接点击那个文本节点这次跑的路径和上次可能是不同的选择器但它依然完成了任务。这就极大降低了对“确定性”的依赖让自动化更接近人的操作逻辑。另一个传统方案的痛点是“跨系统的临时性任务”。比如我经常遇到这种情况从后台系统导出数据再填到另一个系统的表单里或者帮运营把某个页面的商品价格全部核对一遍。这种需求用正式脚本来写吧太浪费因为可能只用一次不写脚本吧手动点几十遍又很崩溃。用 MCP 模式你只需要给 AI 描述一遍需求它自己从打开页面开始一步步把活干完效率非常高。还有一个价值容易被忽略调试和探索。让 AI 打开一个页面、搜索内容、读取当前的网络请求能帮你快速定位问题。比如你想知道某个数据是不是前端接口返回的直接问 AI“打开这个页面监听它的 XHR 请求找到返回商品价格的那个接口把响应体提取出来。”在传统模式下你得临时写一段拦截脚本在 MCP 模式下这是一个自然语言任务。当然要理性看待MCP 方案并不完美比如它每次调用都会消耗模型 token成本比跑脚本高它的执行结果有概率性不能完全替代需要严格断言的 CI 测试。但因为它是 AI 时代新增的能力路径适合作为“智能辅助工具”使用而不是把所有自动化任务都迁过来。正确的姿势是脚本做稳定回归MCP 做灵活探索和临时任务。从更大的影响范围来看Playwright MCP 其实是把“浏览器自动化”从开发者的工具箱搬到了普通业务人员的对话框里。一个运营人员可以在支持 MCP 的客户端里输入“帮我把这个页面所有商品的名称和价格整理成表格”剩下的交给 AI 执行。这让 AI Agent 真正具备了在互联网上执行任务的能力而不是只停留在“给建议、写代码”的层面。3. 环境准备与多端接入5 分钟跑通第一个浏览器任务3.1 安装 Playwright MCP 和浏览器内核先说环境要求。Playwright MCP 需要 Node.js 环境建议直接用 20 及以上 LTS 版本太老的版本容易遇到依赖安装失败。装完 Node 之后官方推荐直接用npx启动但我建议先把包全局装好因为很多 MCP Host 在启动 Server 时不会走交互式确认npx首次拉包可能卡在“是否安装”的提示上导致启动失败。安装命令如下# 全局安装避免 npx 首次询问 npm install -g playwright/mcp # 安装 Chromium 浏览器内核 npx playwright install chromium如果你在 Linux 服务器上跑并且是最小化环境可能还需要装系统依赖npx playwright install --with-deps chromium这段话实际操作时输入命令可能需要加sudo取决于当前用户的权限。装完之后在终端直接输入playwright-mcp如果能看到启动日志说明核心包已经可用了。此时你可以在另一个终端窗口里用 MCP Inspector 之类的工具连接测试也可以直接进入下面的客户端配置环节。3.2 在 Cursor、Claude Code、Codex CLI 中接入不同客户端的配置入口不太一样但本质上做的都是同一件事告诉 Host 怎么启动 Playwright MCP Server。我以最常见的几种为例。在 Cursor 中打开设置界面找到 MCP 配置页添加一个全局 MCP Server填入{ mcpServers: { playwright: { command: npx, args: [--yes, playwright/mcplatest] } } }这里的--yes参数很关键它让npx在包不存在时不要询问、直接安装避免 MCP Host 等待一个永远不会出现的输入。在 Claude Code 中可以通过命令行直接注册claude mcp add playwright -- npx --yes playwright/mcplatest把配置文件写进项目的.mcp.json也可以效果类似。Codex CLI 也有对应命令不同版本的参数可能略有差别核心思路一样给它一个启动命令让它拉起服务。如果你用的是 Cherry Studio 这类桌面客户端通常在“模型服务”或“外部工具”菜单里有 MCP 配置入口填同一份 JSON 即可。配置完成之后怎么验证是否成功最简单的办法是直接问模型一句“你现在有哪些浏览器相关的工具”如果配置正确模型会告诉你它拥有导航、点击、截图等能力。或者你让它做一个简单任务比如“打开 https://example.com并把页面标题告诉我”。整个流程走通说明你已经具备 Playwright MCP 的实际使用能力了。3.3 常用启动参数根据场景调整浏览器行为使用 Playwright MCP 时启动参数决定了浏览器以什么形态出现。默认情况下它会打开一个带界面的浏览器窗口方便你观察 AI 的每一步操作这在调试阶段非常有用。但如果你希望它在后台静默运行可以加--headless。我常用的几个启动参数如下# 无头模式适合服务器环境 playwright-mcp --headless # 指定浏览器内核 playwright-mcp --browser chromium # 设置视口大小模拟桌面或移动端 playwright-mcp --viewport-size 375,812 # 指定用户数据目录保留登录态和本地存储 playwright-mcp --user-data-dir /path/to/profile还有几个我特别推荐的参数参数作用适用场景--isolated每次会话使用全新浏览器上下文需要干净测试环境的场景--save-har导出 HAR 网络抓包文件排查接口请求、分析页面性能--trace开启 Playwright 追踪记录需要回放操作步骤的场景--timeout设置操作超时时间防止 AI 卡在某个元素加载上--allowed-origins限定 AI 只能访问指定域名防止模型乱跳其他网站--blocked-origins屏蔽图片、统计类域名提升加载速度、减少干扰其中--allowed-origins是安全和可控性设计里比较重要的一项。比如你只希望 AI 操作你自己的后台系统可以把它限定成只允许那一个域名这样即使模型理解偏了也不会跑去访问无关网站。3.4 一个小坑不要同时开多个实例共用一个 user-data-dir如果你想用--user-data-dir保留登录态有一个非常典型的坑同时启动两个 Playwright MCP 实例指向同一个用户数据目录第二个浏览器会直接启动失败报类似 “ProcessSingleton” 的错误因为 Chrome 家族浏览器不允许两个进程同时占用一个配置目录。我第一次遇到这个问题时还以为是安装坏了排查半天才发现是目录冲突。解决办法很简单要么指定不同的目录要么串行使用不要同时开。4. 核心工具能力拆解AI 是怎么“看见”页面的4.1 常用工具清单启动之后Playwright MCP 会向外暴露一组工具。不同版本的工具名可能有细微差别以你当前客户端里模型实际看到的为准但核心能力基本是固定的。我列一个高频率使用清单工具名常见命名作用最常用参数browser_navigate导航到指定 URLurlbrowser_click点击页面元素element、refbrowser_type在输入框中填入文本element、textbrowser_snapshot获取页面可访问性快照无browser_take_screenshot截取当前页面或整页截图fullPage、formatbrowser_select_option操作下拉框element、valuebrowser_hover鼠标悬停elementbrowser_press_key键盘按键keybrowser_upload_file上传文件element、filesbrowser_network_requests获取页面发起过的网络请求urlPatternbrowser_extract_content提取页面核心内容和链接无browser_wait_for等待页面或元素出现selector、statebrowser_close关闭当前页面无这些工具组合起来覆盖了浏览器的绝大部分日常操作。我最常用的是browser_snapshot因为它决定了 AI 对页面的理解程度也是整个 MCP 方案能够落地的底层逻辑值得单独讲一讲。4.2 可访问性快照原理为什么 AI 不需要 XPath听到“快照”很多人会以为这是截图其实完全不是。Playwright MCP 的browser_snapshot返回的是一份结构化的可访问性树Accessibility Tree它会把所有可交互元素、文本内容、控件状态映射成一个树形结构。比如说页面上有一个输入框用户在快照里看到的不是它的像素位置而是它的角色、名称、是否有值、是否可编辑这些语义信息。AI 基于这份文本形式的快照就能决定下一步调用哪个工具、点击哪个元素。这个设计非常聪明。如果你把一整张截图画给模型看模型虽然能看图但对元素的精确坐标、可操作性并不敏感而且图片 token 消耗大。换成可访问性快照之后AI 看到一个“提交”按钮知道它是一个按钮节点点击参数直接传“提交”对应的标识即可既省 token 又可靠。这也是为什么你用 Playwright MCP 时AI 经常不需要你给它 XPath 或 CSS 选择器它能通过快照自己找。另一个隐藏优势是对动态 iframe 的内容也有一定支持。普通 DOM 脚本里处理 iframe 需要先切换 frame再定位内部元素流程很繁琐。而 Playwright MCP 在生成快照时会把页面内的 iframe 内容合并进整体结构中AI 像操作普通元素一样操作 iframe 内元素即可。当然个别跨域限制场景例外后面我会讲怎么排查。4.3 怎么给 AI 准确的任务参数了解了快照机制你就理解了为什么给 AI 下指令时要“说人话、少说代码”。比如你想让它搜索“Playwright MCP”正确的自然语言是“打开百度在搜索框输入 Playwright MCP然后点搜索。”AI 会通过快照自动定位输入框和搜索按钮。但有些时候页面元素并不唯一页面上可能有好几个“确定”按钮AI 可能点错。这种情况下你要在指令里增加约束信息比如“点击右上角那个确定按钮”或者“点击弹窗里的确定”。快照里其实包含了元素的上下文AI 能理解位置关系描述。还有一个经验如果任务包含“先登录”“先滚动到页面底部”这种前置条件一定要写在同一条指令里因为模型是按上下文连续推理的信息越完整动作序列越靠谱。4.4 让 AI 保留登录态的两种思路很多实际场景需要登录后才能操作比如后台系统的数据回填。Playwright MCP 有两种方式处理。一种是把登录过程直接交给 AI让它打开登录页输入账号密码点击登录之后整个会话的 Cookie 都会保留后续任务直接复用。另一种是启动时指定--user-data-dir提前用普通浏览器手动登录一次缓存好登录态之后所有 MCP 会话都共享这个目录的 Cookie。第二种方式适合账号密码不方便直接暴露给模型的场景。要注意的是用--user-data-dir时如果这个目录已经被用户正常打开着的浏览器占用MCP 启动同样会失败。所以最好是单独建一个目录专门给自动化使用。5. 从自然语言到浏览器动作真实场景编排实战5.1 一个完整示例让 AI 搜索并整理结果我拿一个最常见的任务走一遍。假设我想让 AI 去某公开站点搜索关键词然后把结果整理成结构化数据。指令可以这样下“打开 https://example.com在页面的搜索框中输入关键词 Playwright MCP点击搜索。等待结果加载完成后把前 5 条结果的标题和链接提取出来整理成 Markdown 格式的表格。”模型在执行时大概会经历这样的动作序列调用browser_navigate打开站点首页调用browser_snapshot获取页面结构找到搜索框调用browser_type输入关键词再次调用browser_snapshot或直接找搜索按钮调用browser_click等待结果加载可能调用browser_wait_for或再次快照调用browser_extract_content提取结果内容最后整理成表格反馈给你。整个过程你不需要关心选择器只需要保证指令里“搜索框”“点击”这些语义在页面上真实存在。如果某个搜索结果在页面底部AI 还会自己先滚动页面再读取。这就是自然语言驱动浏览器自动化的最大价值。我在第一次跑这个例子时踩过一个很有意思的坑我让 AI 点击搜索按钮但页面上有个悬浮广告刚好盖住了按钮。AI 在快照里看到了按钮但点击后没有反应。它居然自己意识到了问题调用截图查看页面状态然后尝试用键盘 Tab 键切换到按钮再按回车最终完成了任务。这种“遇到问题自己想办法”的能力是脚本模式很难实现的。5.2 表单自动回填跨系统数据搬运的典型案例还有一个我经常给团队演示的场景从系统 A 读取一批订单号再到系统 B 里逐个查询并填写反馈状态。放在以前有两种做法写一个 Python 脚本用 Playwright 库处理两个系统的登录态、元素定位代码量大或者人工操作点到手酸。现在有了 Playwright MCP可以让 AI 一次性完成“从当前页面的表格里读取订单列表然后逐个在系统 B 的查询框里输入订单号把每个订单的当前状态记录下来。遇到查询无结果的订单单独列出来。”需要注意跨系统操作时登录态、窗口切换都比较考验 AI 的推理能力。如果系统 B 的页面结构很复杂建议拆成两步先让 AI 读数据再让 AI 去填写每步确认结果后再继续。串行操作比一口气让 AI 干完更稳定。5.3 监听网络请求辅助排查线上数据来源因为标题里有人提到“Playwright 监听页面请求”这里必须展开说一下。browser_network_requests这个工具可以查看页面加载过程中发出的所有网络请求包括 XHR、Fetch、静态资源等。它在排查前端问题时很实用比如页面显示的价格不对你怀疑是某个接口返回了缓存数据就可以让 AI“打开商品详情页监听所有网络请求找到返回商品价格的接口把它的完整请求地址和响应内容提取出来。”模型会一边执行浏览器操作一边根据网络请求日志筛选符合条件的条目最后把接口信息整理给你。这个过程本质上是把“F12 工具 手动翻 Network 面板”变成了自然语言对话非常适合快速定位问题。5.4 如何处理动态 iframe 和复杂弹窗动态 iframe 是浏览器自动化里比较让人头疼的问题。Playwright MCP 的快照机制已经解决了一部分但还有两个注意点。第一有些 iframe 内容是点击之后才动态插入的如果 AI 在快照里看不到它你先让 AI 点击触发它的按钮再重新获取快照。第二极少数跨源 iframe 会限制可访问性数据上报AI 拿不到内部结构此时可以让 AI 直接切换标签页或使用键盘操作或者我们在启动参数里放行对应域名。遇到这类问题不要慌按“先刷新快照、再切换上下文、最后考虑是否被跨域限制”这个顺序排查。弹窗处理也有技巧。很多页面有一进入就弹出的营销活动层AI 如果没注意到后续点击会被弹层挡住。可以在指令里明确写“先关闭页面上可能存在的弹窗广告再执行接下来的操作。”模型通常会在快照里识别出弹窗的关闭按钮比如“知道了”“X”等先做关闭动作再进行正式流程。6. 老玩家怎么接Python、pytest 与 MCP 的混合玩法6.1 不必二选一可以两个模式互补如果你是测试开发已经用 Python Playwright pytest 搭了一套自动化框架没必要把现有体系推倒重来。更务实的做法是让 MCP 成为框架里的一个“智能探索层”。什么意思呢传统 pytest 用例适合跑那些步骤固定、断言明确的场景但用例设计阶段常常需要快速了解页面结构、确认元素是否存在。以前你只能自己去 DevTools 里看或者写临时脚本现在可以直接借助 MCP让 AI 先去页面上走一遍告诉你页面有哪些关键元素、是否会触发弹窗、接口调用频率如何然后把结论反馈给你你再据此编写正式用例。这就相当于把“人工探索”升级成了“AI 探索”。6.2 如果要在 Python 里手动调用 MCP少数场景下你可能想在自己的 Python 代码里直接调用 Playwright MCP Server而不是通过 Cursor 这类客户端。思路是启动一个 MCP 客户端比如mcp官方 Python SDK连接上用npx --yes playwright/mcplatest启动的 Server然后像调用函数一样调用它的工具。我简单写一个连接骨架import asyncio from mcp import ClientSession, StdioServerParameters from mcp.client.stdio import stdio_client async def main(): server_params StdioServerParameters( commandnpx, args[--yes, playwright/mcplatest], ) async with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: await session.initialize() tools await session.list_tools() for t in tools.tools: print(t.name) asyncio.run(main())这段代码会把 Playwright MCP 暴露的所有工具名打印出来。拿到工具列表后你可以用session.call_tool(browser_navigate, {url: https://example.com})这种方式逐个调用。理解了这层调用关系你就能把 MCP 能力封装成自己框架里的关键字让 pytest 用例和 AI 动作混合编排。6.3 Python 侧常见的同步异步陷阱如果你在 Python 里混用 Playwright 的同步 API 和异步事件循环会碰到一个非常典型的报错提示看起来像 “It looks like you are using Playwright Sync API inside the asyncio loop”。简单解释一下Playwright 有两套 APIsync_playwright和async_playwright前者是同步写法后者是异步写法。只要在同一个项目里同时用了这两套并且还在 async 环境里调用同步 API就可能触发冲突。解决办法有三条统一用异步 API或者统一用同步 API 并避免进入 async 循环再或者把同步 API 放到单独的线程里执行。我在封装 MCP 工具时倾向于全部走异步因为 MCP SDK 本身就是异步的强行混入同步调用只会给自己埋雷。6.4 把 MCP 工具包装成 pytest fixture 的小思路再往前一步你可以把 MCP 调用封装成 pytest 的 fixture让测试用例能够直接通过自然语言描述来触发浏览器操作。思路大概是这样在 fixture 里启动一个 Playwright MCP 客户端会话暴露一个ai_action(prompt)方法测试用例里写def test_query_result(ai_action): result ai_action(打开 https://example.com搜索 Playwright MCP把第一条结果标题返回给我) assert Playwright in result这条用例的可维护性非常高因为测试步骤不是固定代码而是让 AI 根据页面实际情况灵活调整。当然这种用例的缺点是执行速度和稳定性依赖模型能力不适合放到每次 CI 都跑的核心回归集里。我的建议是单独建一个ai_smoke标签用于每日巡检和探索式测试与确定性断言用例区分开。7. 常见报错与问题排查实录下面这些内容是我在实际使用中遇到过的、以及在社区里被高频讨论的问题。我整理成了排查表按频率排序。现象可能原因解决办法MCP Server 启动失败Node 版本太低 / npx 缺少交互环境升级 Node 20全局安装playwright/mcp提示 executable doesnt exist浏览器内核未安装执行npx playwright install chromiumLinux 上浏览器缺系统依赖缺少动态库执行npx playwright install --with-deps chromium浏览器打开后闪退user-data-dir 被占用关闭其他浏览器实例换一个目录AI 找不到页面元素页面动态渲染未完成在指令里要求“等待加载完成”或手动调用截图确认AI 点击元素无反应悬浮层遮挡 / 元素不可见先关闭弹窗滚动到元素位置再点击登录态每次丢失没有持久化用户目录启动时加--user-data-dir参数页面内容一直加载不出网络较慢等待时间太短增加--timeout参数或让 AI 多等一下快照里看不到 iframe 内容跨域限制 / 动态插入先触发 iframe 加载再重新获取快照多个实例同时打开同一站点模型理解偏差配置--allowed-origins限制域名范围除了表格里的问题我再补充几个有价值的实操细节。7.1 首次启动卡在下载阶段如果你在网络条件一般的环境里第一次npx --yes playwright/mcplatest会同时下载 npm 包后续启动还可能下载浏览器内核整体耗时很长某些 MCP Host 在等待超过一定时间后直接判定启动失败。我的经验是提前把包和浏览器内核都装好再让客户端去连接。你可以先单独跑一次npx --yes playwright/mcplatest看到进程正常起来了直接 CtrlC 结束然后再配置到 Host 里后续启动就会快很多。7.2 模型一直在“转圈”没有动作有时候模型拿到任务后迟迟不调用工具只是在思考。原因通常有两个指令太模糊模型不知道先做哪一步或者模型对工具参数不熟在反复尝试。我的做法是在指令里明确起点和终点比如“从打开某某网站开始以整理成表格结束”。如果模型对参数不熟可以在对话里补充一句“先用 snapshot 看页面结构再决定操作”它就明白了路径。7.3 页面元素变化快AI 操作不稳定对于频繁变化的页面MCP 的稳定性确实比不上写死选择器的脚本。破解的办法是减少 AI 的决策空间你可以在指令里直接告诉它元素的文本内容比如“点击页面上文字为‘立即购买’的按钮”它会优先基于文本去匹配而不是从一堆相似的按钮里猜。这个方法比让它自己漫无目的地找要稳定得多。7.4 早期调试时建议打开浏览器窗口观察虽然无头模式在服务器上很有用但你在本地调试新任务时我强烈建议保留有头模式看着浏览器里 AI 的一举一动。你会发现它能自己滚动、自己关弹窗、自己切换标签页这种可视化的过程能帮你非常快地判断指令描述是否准确。调试到流程稳定之后再切回--headless节省资源。7.5 关于“绕过防护、爬取受限数据”的提醒最后聊一个边界问题。Playwright MCP 的能力很强它能驱动真实浏览器、绕过很多单纯的 HTTP 请求限制于是总有人想用它去爬取那些明确禁止抓取的站点或者突破平台的反爬限制。我的态度很明确能力归能力使用必须遵守目标网站的条款和法律法规。MCP 的价值应该放在正常测试、内部系统操作、公开信息整理这些合规场景上。你把它用在正经场景里它是提效利器用在不该用的地方给自己惹麻烦不说也是在败坏自动化工具的名声。社区里已经有不少网站开始对高频自动化访问做封禁一旦你的 IP 或账号被拉黑影响的是你自己的业务。所以守住规矩才能长期稳定地用它。7.6 我的日常调试流程总结按我的习惯一个全新的 MCP 自动化任务我会分四步走。第一步开着浏览器窗口先手动探索一遍页面弄清楚关键元素和弹窗情况顺便把网站的 DOM 特点、是否需要登录都摸清楚。第二步用自然语言给 AI 描述任务带上“先做 A 再做 B 最后输出 C”的路径结构。第三步观察 AI 执行过程如果中途跑偏就中断它在对话里补一句“刚才不对你应该先……”纠正方向。第四步流程稳定后如果需要长期复用再把它固化成脚本或做成带标签的测试用例。这套流程看起来保守但能省下大量重写调试的时间。说到底Playwright MCP 给我们带来的不只是“能用自然语言操作浏览器”这个新奇体验更重要的是它改变了我们和网页交互的方式从“写代码告诉浏览器做什么”变成“说需求让 AI 想办法完成”。对测试、运维、运营、数据整理这些重复性网页工作来说这是一次效率上的明显升级。我也希望看到更多团队把它接入到自己的日常工具链里让浏览器自动化不再只是测试工程师的专利。
返回列表