ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Cherry Studio + MCP:手把手教你实现自动化测试与数据爬取

Cherry Studio + MCP:手把手教你实现自动化测试与数据爬取 最近很多人问我Cherry Studio不是个AI聊天客户端吗整天在群里看到有人用Cherry Studio玩MCP、跑自动化测试、做数据爬取到底是怎么搞的我自己也踩了不少坑折腾了一两周把整个链路摸了一遍今天把整个过程整理出来。这篇文章不会讲那种玄乎的“AI将会改变一切”而是切切实实地从工具安装、MCP配置、测试用例设计、爬虫脚本实现一直讲到问题排查尽量让你看完之后能直接照着做。老规矩先说清楚目标读者已经安装了Cherry Studio、对AI辅助编程或测试有一点基础但还没搞清楚MCP怎么用的人或者是想做自动化测试但不想上来就写几百行Selenium脚本想先借助AI快速验证流程的人。文章核心一句话把MCP当成一个“万能工具插座”Cherry Studio就是插座面板你用自然语言让AI调用工具它能帮你操作浏览器、抓网页、跑测试用例。1. 为什么要把自动化测试和数据爬取交给Cherry Studio MCP1.1 先从Cherry Studio的定位说起Cherry Studio本质上是一个多模型AI客户端它本身不带推理能力而是帮你集中管理各家大模型的API Key统一对话入口。常见的用法是同时配置多个模型比如日常问答用一个模型写代码用另一个模型然后在同一个会话里随时切换。但这只是“聊天客户端”的维度。Cherry Studio的一个重要设计是支持MCPModel Context Protocol模型上下文协议。这个协议最早由Anthropic提出核心要解决的事情是让AI模型可以调用外部工具、访问外部数据而不是只靠训练时的知识回答你。打个比方模型就像一个刚毕业的实习生知识储备不错但不会用公司内部系统MCP就是给这个实习生配上各种工具和接口他才能真的干活。所以Cherry Studio MCP的组合把“AI聊天”升级成了“AI Agent工作台”。你可以直接让AI打开某个网页、点击按钮、填写表单、检查页面返回结果、提取关键数据甚至把结果整理成Excel。整个过程不用离开客户端也不需要单独装什么复杂环境。1.2 自动化测试、数据爬取为什么值得接入MCP先说自动化测试。传统的UI自动化测试你要写Selenium或Playwright脚本定位元素、处理等待、写断言、跑用例。这套流程对熟练的开发或测试来说不算难但对大多数人来说门槛在“写脚本”本身——你为了验证一个小功能可能要先折腾半天环境。接入MCP之后流程变成了你告诉AI“打开这个页面点击登录按钮输入账号密码断言是否跳转到首页”。AI理解你的意图后会通过Playwright MCP server去执行对应的浏览器操作把它变成真实的浏览器指令最后把操作结果反馈给你。相当于你把写脚本的过程交给了AI自己只需要描述需求、审阅结果。数据爬取也类似。传统爬虫要写HTTP请求、处理Cookie、解析HTML、提取字段代码量不小。而MCP提供了一些现成的网页抓取工具serverAI可以自行决定访问哪个URL、抓取哪些内容、按什么结构整理数据。你只需要给一句“帮我抓取这个页面上所有商品标题和价格”剩下的细节AI会拆解成工具调用去执行。1.3 网络热词里那些玩法到底哪些值得试搜索相关关键词的时候能看到大量和MCP相关的玩法playwright mcp、figma mcp、blender mcp、codex配置mcp、chrome mcp server甚至还有catia mcp、nxopen mcp这种工业设计软件的场景。这说明MCP协议本身已经成了一个比较通用的生态不只是聊天玩具。从实用角度来看我个人觉得最值得优先尝试的是浏览器自动化类Playwright MCP、网页内容抓取类Fetch / Chrome DevTools MCP、文件读写类Filesystem MCP。这三个场景和日常开发、测试、数据处理关系最紧密也是本文要重点展开的。另外如果你已经在用Cursor或Codex会发现它们也能配置MCP server。这类工具的思路其实一样把外部工具能力接入AI对话流让AI不仅会“想”还会“做”。所以本文讲的流程换到别的支持MCP的客户端上也通用只是配置入口不同。2. MCP核心概念先把这几个名字弄清楚再动手2.1 MCP是什么一句话说清楚MCP的全称是Model Context Protocol翻译过来是“模型上下文协议”。它的作用是在AI模型和外部工具之间建立一套标准化的通信方式。你可以把它理解为通用USB接口以前每个设备都有自己的充电接口现在统一成了Type-C哪个设备都能插。MCP做的事情类似——如果没有MCP你想让AI调用浏览器、数据库、文件系统每个工具都得单独给AI写一套集成代码有了MCP工具方只需要实现一个标准的server任何支持MCP的客户端包括Cherry Studio都能直接调用。2.2 host、client、server的角色分工在用MCP时会涉及三个角色MCP Host、MCP Client、MCP Server。MCP Host是运行AI模型的上层应用比如Cherry Studio就是Host。Host负责把用户的问题发给模型并把模型要求调用的工具指令转发出去。MCP Client在Host内部运行作用是维护与各个Server的连接可以把它理解为“调度中心”客户端与服务器之间的会话管理、消息收发都由它负责。MCP Server是实际干活的进程。每个Server提供一类或多类工具比如Playwright Server提供了浏览器控制工具Filesystem Server提供了文件读写工具。Server启动后通过标准输入输出stdio或HTTP与Client通信。用一个生活场景来说明你在餐厅点了菜对AI描述需求服务员Host把你的话记下来后厨Client根据菜单安排各个厨师Server去做菜。每个厨师只负责自己的灶台但他们通过后厨平台统一配合。角色作用对应到Cherry StudioMCP Host承载AI模型与用户交互Cherry Studio本体MCP Client管理MCP Server连接与消息转发Cherry Studio内置的MCP客户端模块MCP Server提供具体工具能力如浏览器控制、网页抓取Playwright MCP、Fetch MCP等独立进程2.3 MCP的调用链路AI到底怎么“操作”工具的MCP调用过程可以分成几段。第一步用户输入自然语言需求Host将消息传给大模型。第二步模型根据内置的System Prompt和工具描述判断应当调用哪个MCP Server的哪个工具生成一个工具调用请求。第三步Host中的MCP Client收到请求将参数转发给对应的Server进程。第四步Server执行真实操作——打开浏览器、点击按钮、读取文件等然后把结果返回给Client。第五步Client把结果回传给模型模型基于结果决定下一步动作或生成最终回复。这个过程最关键的一点是模型是有“决策权”的它不会一股脑把所有步骤都做完而是边看结果边决定下一步。比如你让它“打开页面并搜索关键词”它会先调用浏览器打开URL等页面加载完成后看到结果再决定调用点击或输入工具。这就是所谓的Agent循环。2.4 动手之前先想清楚你需要的工具集在配置MCP之前建议先列一下你要做的事情需要哪些能力不然一股脑装一堆Server不仅拉低启动速度还会让模型决策变混乱。我的经验是做Web自动化测试和数据抓取常用Server就这几个Playwright MCP核心主力控制浏览器执行点击、输入、滚动、截图、读取DOM等操作。Fetch MCP直接抓取URL内容并转为结构化文本适合简单页面、接口数据。Chrome DevTools MCP通过Chrome调试协议直接与浏览器交互可以做性能分析和更底层的页面操作。Filesystem MCP读写本地文件方便把测试结果或爬取数据落盘。Memory MCP跨会话保存一些常用配置或状态比如登录态或常用选择器。在Cherry Studio的MCP配置页里你会看到一个已连接Server列表每个Server下方列出了它提供的工具。我建议控制Server数量在两到三个模型决策的准确率会明显更高。3. 环境准备Cherry Studio接MCP的完整步骤3.1 安装Cherry Studio并找到MCP入口如果你还没装Cherry Studio去官网下载对应系统的版本即可。安装过程没什么特别的普通应用程序安装流程。装完之后重点找MCP配置入口。不同版本所在位置略有差异但一般都在“设置”或“助手”区域里有一个“MCP服务器”或“MCP工具”的选项。有的版本MCP功能不是默认展开的需要你先打开开发者模式或高级设置。具体位置是设置页右侧往下翻能看到“MCP服务器”点击“添加”就可以开始配置。我最初找不到入口就是因为版本较老升级到最新版之后才出现。3.2 添加一个MCP Server配置MCP Server可以通过命令行方式启动也可以连接远程HTTP服务。最常用的方式是通过npx运行Node.js包因为Playwright等工具都是Node生态的。以添加Playwright MCP为例配置项大概像这样{ mcpServers: { playwright: { command: npx, args: [-y, playwright/mcplatest], env: { HEADLESS: false } } } }这里有个细节command是npxargs里传入包名。env字段可以设置环境变量比如HEADLESS控制浏览器是否有头模式。如果你需要在抓取时观察浏览器画面就设为false如果只是跑批量测试、不需要人盯着可以设成true节省系统资源。在Cherry Studio里你不需要直接手写JSON文件界面里有表单但理解这个JSON结构仍然重要因为在命令行调试、迁移配置时会频繁用到。3.3 从npx启动到远程Server三种典型连接方式MCP Server的连接方式主要有三类分别适合不同场景第一种是本地命令方式通过npx或node执行一个本地程序通信走标准输入输出stdio。这是最常用的方式优点是简单、数据不出本机缺点是需要本地装了对应的运行时比如Node.js。第二种是HTTP / SSE方式Server运行在远程服务器上客户端通过URL连接。这种方式适合Server部署在容器或云主机上多人共用一套工具。比如团队里有人把一个接口测试的MCP Server发布到内网地址其他人直接填URL就能用。第三种是带认证的远程方式比如OAuth或Token鉴权。类似Figma MCP这类服务需要你去开发者后台申请Token然后在配置里填上Server才能访问你的设计稿数据。我的建议是第一优先级用本地命令方式因为它最稳定、最透明出问题也容易调试。远程方式适合Server本身运行在别的地方或者工具涉及多人共享。3.4 验证连接与基本排错添加完Server之后Cherry Studio一般会显示连接状态。如果配置正常状态会变成“已连接”同时工具列表里会出现该Server支持的工具名。如果连接失败最常见的几个原因本地没有Node.js或npx不在PATH环境变量里。在命令行执行npx --version验证一下如果提示找不到命令先去安装Node.js。首次运行npx会下载包速度可能很慢甚至因为网络原因超时。可以先把包下载好再配置Server。端口冲突或权限问题某些HTTP类Server会占用本地端口换一个端口重试就好。验证是否连通的最快方式是在对话里直接问一句带有工具调用意图的话比如“用playwright打开百度首页”。如果AI能调用browser_navigate工具并返回页面内容说明链路已经通了。4. 实操一用MCP做自动化测试的完整过程4.1 需求设定一个可复现的测试场景口说无凭我拿一个实际例子来讲。假设你有一个Web页面里面有一个登录表单你需要验证三个点空表单提交时是否弹出提示错误密码时是否提示“密码错误”正确账号密码时是否跳转成功。用传统方式你得写一个Playwright或Selenium脚本几十行代码起步。用Cherry Studio MCP整个过程变成了对话式的。但这里要注意不是简单说一句“帮我测一下登录”就能跑完因为AI需要明确的操作对象和预期结果。你应当把步骤描述清楚或者先在会话里约定好被测系统地址。比如我首先输入“使用Playwright MCP打开 https://example.com/login 告诉我页面上有哪些输入框和按钮。”这一步是为了让AI先观察页面结构后续选择器才能写准。然后你再一步步下达操作指令。4.2 通过自然语言下达测试用例拿到页面结构之后接下来就是执行测试。像这样第一步告诉AI“点击登录按钮不要填任何表单然后查看页面上是否出现‘请输入账号’的提示。”第二步告诉AI“在账号框输入test密码框输入错误密码123456点击登录查看是否出现‘账号或密码错误’的提示。”第三步告诉AI“在账号框输入正确账号密码框输入正确密码点击登录观察页面是否跳转到首页并截图保存。”有趣的地方在于AI会自己决定调用哪个工具。比如“点击登录按钮”模型可能会先调用browser_snapshot获取当前页面可操作元素再调用click工具点击对应位置。你在对话里看到的反馈实际上是它一步步执行工具后返回的结果。我在实测中发现AI对模糊指令的处理有时比较机械。比如你说“点击登录按钮”当页面有多个按钮时它可能点错。这时候需要你描述得更精确例如“点击typesubmit且文本为‘登 录’的按钮”。所以在写测试用例时比平时跟同事沟通还要再具体一点。4.3 自动化测试中三个关键技巧跑了几轮之后我总结了三个对MCP自动化测试影响很大的技巧。第一页面元素定位要明确。MCP虽然能获取页面快照但模型对视觉位置的理解不如人精准。如果你能在指令中给出CSS选择器或XPath它的点击准确率会大幅上升。比如“点击按钮 #login-submit”比“点击登录按钮”成功率更高。第二等待策略很重要。页面加载、接口请求都需要时间AI虽然会做一些自动等待但遇到慢接口时容易在页面还没渲染完就断言失败。我通常会在指令里加上“等待2秒后再操作”或“等待页面完全加载检查是否有加载中提示”。第三结果断言要具体。AI执行完操作后如果只是问“页面正不正常”它可能会回答得模棱两可。更好的做法是明确指定“检查页面是否包含‘登录成功’字样如果包含输出PASS否则输出FAIL并截图。”这样把断言标准固化下来测试结果才有意义。4.4 结合Playwright MCP的踩坑记录Playwright MCP本身很好用但实际跑的时候我踩了几个坑值得说一下。第一个坑是浏览器启动参数。默认情况下Playwright MCP会启动一个带界面的浏览器这在调试时很方便但如果你在服务器上跑测试没有图形界面浏览器会启动失败。解决办法是在配置里设置HEADLESStrue。第二个坑是iframe里的元素。MCP的快照功能有时候不会把iframe内部内容完整暴露给模型导致AI找不到元素。我的处理办法是先用工具定位到iframe再让AI切换进去操作。虽然对话里多几个来回但走一步看一步反而更稳。第三个坑是登录态的保存。每次启动浏览器都是全新会话一些需要登录的页面就要重新走一遍登录流程。后来我把登录流程做成一个“预热步骤”先跑一遍登录再让AI把Cookie保存到文件下次启动时通过Playwright的storageState参数加载。第四个坑是MCP工具调用的“幻觉”。有时候模型会编造一个不存在的工具名比如它可能以为有一个click_by_text的工具实际上不存在。这时候需要在对话里明确工具前缀比如“使用playwright提供的click工具”模型就不太会跑偏。5. 实操二用MCP做数据爬取的思路与实现5.1 先分清爬取场景选对工具爬取数据之前先判断目标页面的类型这会决定你要用哪个MCP Server。如果是纯静态页面内容直接写在HTML里用Fetch MCP就够。它能把页面整个抓下来再让AI模型从文本中提取关键信息。优点是快、轻量不依赖浏览器。如果是单页应用内容通过JavaScript动态渲染Fetch MCP只能拿到空壳HTML这时候就得用Playwright MCP。Playwright会真实启动浏览器渲染页面等JS执行完再抓取内容得到的才是真正可见的页面。如果爬取目标有登录、分页、下滑加载等交互Playwright也是必要选择因为你能让AI模拟点击“下一页”按钮。5.2 一个通用流程搜索、打开、抽取、整理我以爬取某个公开商品列表页为例演示整个流程。假设目标页面是一个行业资讯列表每页有20条数据每条包含标题、发布时间、摘要需要翻10页。第一步让AI打开列表页第一页“用playwright打开目标URL等待页面加载完成列出当前页面所有列表项的标题和时间。”第二步检查AI返回的数据结构。如果它漏了某些字段你可以追问“只提取标题和发布时间忽略摘要按表格形式输出。”第三步翻页。发送指令“点击下一页按钮等待2秒继续提取同样的字段”。这里要注意如果你一次性说“继续翻页抓取10页”AI在长任务执行上可能会中断或者漏页我建议分页指令一页一页来或者明确“重复这个操作直到没有下一页”。第四步整理数据。等所有页的数据抓完之后你可以让AI对所有提取结果做结构化的汇总比如合并去重、按时间排序最后输出成表格。5.3 数据落盘导出Excel的那点事很多人会搜“Cherry Studio能导出Excel表格吗”其实这个问题的答案取决于你怎么理解“导出”。Cherry Studio本身的对话记录导出格式主要是Markdown和文本并不是表格软件。但是对话里产出的结构化数据可以让AI把内容整理成CSV格式的代码块然后你复制粘贴保存成.csv文件用Excel直接打开就行。如果你装了Filesystem MCP甚至可以让AI直接把CSV写入本地文件都不用复制粘贴。我在实践里的做法是让AI生成CSV内容并调用filesystem.write_file写入到指定路径再用Python脚本或Excel打开做进一步清洗。如果数据量大比如几千行建议分页抓取时就把每页结果追加到一个文件里最后合并。这里有一个小技巧CSV编码问题。你抓取的中文内容如果直接用Windows记事本打开有可能会乱码原因是CSV保存时用了UTF-8编码而Excel默认用GBK。让AI在写入时指定UTF-8 with BOM或者最后用Excel的“数据-自文本”导入并选择UTF-8编码基本能解决乱码。5.4 合规、频率控制与“别作死”的底线数据爬取这件事操作上不难但合规一定要留心。我的原则是只爬取公开数据遵守目标网站的robots协议控制请求频率不给对方服务器造成压力不破解登录限制或验证码爬下来的数据不用于任何商业用途或公开传播。具体到MCP实操层面频率控制可以这样实现在抓取指令里明确要求“每页请求完成后等待3秒再访问下一页”或者设置在Playwright里模拟人的操作速度比如滚动页面、随机延迟。这些虽然会拖慢速度但从长期角度看更稳妥。另外目标网站如果明显有反爬措施正常手段拿不到数据那就说明这个数据本身不应该通过爬取获取应该考虑官方API或授权渠道。MCP AI再强也不应该用在绕过访问控制的场景上。6. 常见问题与排查技巧实录6.1 一张表搞定八成故障我把这段时间遇到的问题整理成了一个速查表排查时先按这个顺序过一遍大部分问题都能解决。症状可能原因处理办法MCP Server显示“未连接”本地Node.js未安装或npx不在PATH命令行执行node -v、npx --version确认环境首次连接特别慢npx正在下载依赖包预先安装依赖或更换网络环境后续启动会快AI说“找不到指定工具”模型生成的工具名与实际不符在指令中明确“使用playwright中的xxx工具”浏览器没有弹出窗口HEADLESS被设成了true配置HEADLESS: false或检查是否有隐藏的后台窗口页面元素定位失败页面结构变化或iframe中内容不可见先获取页面快照再基于快照中的元素信息操作抓取内容为空页面是动态渲染Fetch MCP拿不到HTML改用Playwright MCP等页面JS执行完毕后再抓取中文CSV打开乱码编码不一致写入时使用UTF-8 with BOM或导入Excel时手动选择UTF-8编码长任务执行到一半中断单轮对话上下文或工具超时限制拆分成短任务分页多次执行保留中间结果6.2 哪个环节慢了定位性能瓶颈做自动化测试和数据抓取时如果感觉很慢慢在哪个环节要分清楚。如果是AI“思考”慢比如你提问后模型隔了很久才回复这通常是模型本身的推理速度或API响应问题。你可以在Cherry Studio里换一个更快的小模型或者限制回答长度。如果是MCP Server执行慢比如浏览器打开页面卡顿、页面脚本执行时间过长那跟目标网站和本机性能有关。你可以观察状态栏上的工具调用耗时确认耗时集中在哪个操作上。如果是工具返回结果很大比如抓了一大段HTML回传给模型这会明显拖慢后续响应因为模型要处理的内容变多了。解决办法是让MCP Server端先做筛选比如使用Playwright提取文本而不是整页HTML再让AI基于摘要处理。6.3 进阶把常用流程沉淀成模板和脚本用对话方式完成一次测试或爬取之后不要只在对话里跑一遍就完事更高效的做法是把整个流程沉淀成一个可复用的模板。我的习惯是把成功的指令序列保存成Markdown笔记按“打开页面-获取快照-输入表单-点击提交-断言结果”这样的结构记录。下次跑相同场景时直接把整段指令复制进新对话让AI按步骤执行。这样可以大大减少每次都要重新描述需求的时间和出错概率。更进一步如果MCP的对话流程很稳定了可以考虑把核心步骤转成Python脚本用Playwright库直接写自动化代码。MCP在这里扮演的角色是“快速验证测试步骤的脚手架”先用自然语言验证一遍业务逻辑确认选择器、断言点都没问题再固化成真正的自动化回归脚本。这个思路比一上来就写脚本要快不少也避免了大量因为选择器写错而反复调试的问题。最后再分享一点我个人的体会。MCP这个东西第一次用时觉得“也就是把工具调用包装了一下”但真正跑起来之后会明显感觉到它改变的是工作方式。以前做一个测试用例先查文档、写代码、调试、跑通至少半天现在可以先在Cherry Studio里把流程快速过一遍看到结果不对就马上调整指令几分钟就能把方案确定下来。对于数据爬取也一样需求确认的速度快了很多剩下的工作量主要是数据处理和合规检查。当然MCP并不完美。界面上偶尔会卡长任务容易断模型偶尔会自作聪明选错工具这些都还需要时间打磨。但就目前而言它已经是一个值得认真研究的效率工具了。把Chat类客户端升级成真正能干活的Agent工作台这条路已经走通了接下来就看你能在它上面搭出多少自己的玩法。
返回列表