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

资讯详情

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

midscene.js本地环境搭建指南:从Node.js到AI驱动自动化

midscene.js本地环境搭建指南:从Node.js到AI驱动自动化 最近在梳理Web自动化工具链的时候我发现midscene.js这个项目在开发者圈子里讨论度涨得很快。简单说它把大语言模型引入了浏览器自动化以前写自动化脚本你得花大量时间去找CSS选择器、XPath页面一改结构脚本就废现在直接告诉AI点击登录按钮在搜索框输入关键词模型会自己去理解页面结构、定位元素、执行操作。听起来确实很香但真正上手的第一步就卡住了很多人——本地运行环境怎么装我把整个过程从零开始完整踩了一遍从Node.js环境准备、npm安装、浏览器内核下载到跑通第一个AI驱动脚本全部记录下来。这篇文章适合两类人看一是想在自己电脑上体验midscene.js的开发者二是需要帮团队搭建统一自动化测试环境、但又不想被各种环境问题折腾半天的测试工程师。我会把每一步背后的原理和理由也讲清楚这样你遇到问题时不至于只会照着抄命令。1. midscene.js的运行机制与环境需求1.1 它到底是怎么跑起来的要理解运行环境这个概念先得搞明白midscene.js的工作链路。它不是单一的浏览器插件也不是一个独立的桌面软件而是一套基于Node.js的SDK。它的核心工作流程可以拆成三步通过Playwright驱动一个真实的浏览器实例通常是Chromium打开目标网页将页面内容包括DOM结构、截图、可访问性信息交给多模态大语言模型去理解模型根据你的自然语言指令返回要执行的操作描述再转成具体的浏览器动作比如点击、输入、滚动、断言。所以你会发现搭建midscene.js运行环境本质上要做三件事装好Node.js运行时、装好浏览器内核、配好AI模型的API访问。三者缺一不可。很多人只装了一个npm包就以为完事了结果运行时报找不到浏览器或API Key未配置这就是对运行链路没有整体概念导致的。1.2 官方要求的最低版本门槛midscene.js对本地环境的硬性要求并不高但有一些版本底线要注意。我整理了一下实际的版本要求和我个人的建议依赖项最低要求推荐配置说明Node.js18.x20.x LTS低于18会直接报语法或API缺失错误npm9.x10.x随Node一起安装一般不需要单独升级操作系统Windows 10 / macOS / Linux不限跨平台支持但下载Chromium时略有差异浏览器内核Chromium 最新稳定版Playwright自动下载也可复用本地Chrome但建议用Playwright管理AI模型API支持OpenAI协议即可GPT-4o / Qwen-VL等Key需要提前申请这里特别说一下Node版本。midscene.js用到了不少新的JavaScript语言特性和Node API比如fetch的完整实现、ESM模块支持、结构化日志等。Node 18是第一批内置稳定版fetch的版本所以官方把18定为基线。但我的实测经验是直接用Node 20 LTS会省心很多不仅性能更好而且在npm依赖解析上不容易触发一些旧版bug。1.3 开始安装前先想清楚两个问题动手装环境之前我建议你先花两分钟回答两个问题这会直接影响你的安装路径。第一个问题你只是想快速体验midscene.js的能力还是要把它集成到自动化测试项目里如果只是体验直接用官方Chrome扩展最快几乎不用配环境如果是进项目那必须走npm SDK的方式也就是这篇文章的重点。第二个问题你的AI模型API从哪里来midscene.js本身不内置模型能力它需要调用你提供的模型接口。最常用的方案是OpenAI格式的API国内的话也有多家服务商提供兼容接口。你需要提前准备好API Key并确认账户有余额。如果这一步没想清楚后面就算环境全装好了脚本也跑不起来。2. 本地环境准备Node.js的安装与配置2.1 用nvm安装Node.js别图省事安装Node.js的方式有很多官网下载安装包、Homebrew安装、nvm安装都能搞定。但我强烈建议你使用nvmNode Version Manager不管是macOS还是Linux都适用Windows用户则使用nvm-windows。为什么坚持推荐nvm因为做前端自动化的人电脑上往往同时有好几个项目每个项目的Node版本要求不一样。midscene.js要求Node 18但你可能还有老项目锁死在Node 16。用nvm之后你可以随时切换版本# macOS / Linux 安装 nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 安装完成后重新加载shell配置 source ~/.bashrc # 如果你用的是bash source ~/.zshrc # 如果你用的是zsh # 安装Node 20并切换到该版本 nvm install 20 nvm use 20安装完记得验证一下node -v npm -v如果输出v20.x.x和10.x.x这样的结果说明Node环境已经就绪。我遇到过不少同学卡在nvm装完之后找不到命令这一步其实就是shell配置文件没有重新加载或者终端没有重启重新打开一个终端窗口就好。2.2 Windows用户怎么装Windows下的情况稍微不一样我实测下来的推荐方案是使用nvm-windows。注意它不是nvm的官方Windows移植版而是一个独立项目但功能足够用。下载地址在它的GitHub Releases页面选择nvm-setup.exe直接安装即可。安装完成后以管理员身份打开PowerShell或CMD同样执行nvm install 20 nvm use 20 node -v还有一种更省事的方式是直接去Node官网下载Windows安装包双击安装时记得勾选Add to PATH选项。这种方式的好处是快缺点是以后升级、切换版本都要重新下载安装包。如果你只是临时跑一下midscene.js的demo官网安装包够用了如果你预计会长期做自动化测试开发我建议还是切换到nvm-windows。2.3 npm源该怎么配Node装好之后npm默认指向官方源https://registry.npmjs.org。这个源在大陆地区的访问速度有时候不稳定安装大一点的依赖包会让人等得心焦。所以很多人第一步就是切换成国内的npm镜像源npm config set registry https://registry.npmmirror.com切换之后npm install的速度通常会快很多。但这里我要提醒一个midscene.js特有的坑这个项目更新比较快而镜像源存在同步延迟有时候你在官方源上能装到的版本镜像源上还没有同步。遇到这种情况安装时会报类似404 Not Found的错误。我的建议是默认用镜像源一旦发现某个包装不上就在install命令后面临时指定官方源npm install midscene/web --registryhttps://registry.npmjs.org这样就不会因为镜像同步问题卡住安装流程了。另外说一句npm源配置是全局生效的如果你在公司内网或有一些特殊的前端工程化要求改配置之前最好先npm config get registry看一眼当前值心里有数再改。3. 安装midscene.js项目初始化与依赖3.1 初始化一个干净的项目目录我习惯新建一个专门的目录来跑midscene.js不要直接往现有的大项目里塞因为依赖关系干净出了问题也容易排查。mkdir midscene-demo cd midscene-demo npm init -ynpm init -y会生成一个最基础的package.json文件。如果你对文件内容有要求也可以去掉-y参数按它的问题一步步填写。不过对本地试玩来说默认配置完全够用。3.2 安装midscene.js核心包接下来是重头戏。midscene.js发布的npm包主要分几个我先说最关键的midscene/web。这个包包含了Agent核心逻辑、浏览器控制、AI交互等完整功能。npm install midscene/web如果你打算用命令行方式直接跑YAML场景文件还需要装一个CLI包npm install midscene/cli -D这两个包装好之后你可以看一下package.json里的dependencies字段确认版本号已经写入。我建议把midscene/web的版本记下来后面如果遇到奇怪的问题排查的时候需要确认版本是否跟你参考的文档一致。毕竟这个项目迭代速度很快API有可能会变动。3.3 下载浏览器内核最容易踩坑的一步midscene.js基于Playwright驱动浏览器所以浏览器内核必不可少。大多数情况下你不需要单独去下载Chrome而是让Playwright自己去下载它内置管理的Chromiumnpx playwright install chromium这一步会把Chromium内核下载到本机的Playwright浏览器缓存目录里。网络状况好的话很快但如果你发现下载速度极慢或者直接失败有几种解决办法设置Playwright下载镜像环境变量使用国内镜像加速# macOS / Linux export PLAYWRIGHT_DOWNLOAD_HOSThttps://npmmirror.com/mirrors/playwright npx playwright install chromium # Windows PowerShell $env:PLAYWRIGHT_DOWNLOAD_HOSThttps://npmmirror.com/mirrors/playwright npx playwright install chromium如果项目里已有Chrome或Edge也可以选择让midscene.js连接现有的浏览器实例而不额外下载Chromium。这种方式配置稍复杂对新手我不推荐因为多一个浏览器实例多一份变量。浏览器内核装好之后你可以在node环境里快速验证一下能不能正常启动node -e const { chromium } require(playwright); (async () { const b await chromium.launch(); console.log(browser ok); await b.close(); })()如果输出browser ok说明浏览器驱动链路是通的这个脚本比直接跑midscene.js快得多用来排查环境问题特别高效。3.4 配置AI模型API环境变量与配置文件浏览器是midscene.js的手AI模型才是它的大脑。在跑第一个脚本之前必须把模型API配好。最简单的方式是通过环境变量。在终端里执行export MIDSCENE_API_KEYsk-你的密钥 export MIDSCENE_API_BASEhttps://api.openai.com/v1这里两个变量的作用要说明一下MIDSCENE_API_KEY是模型服务的身份凭证MIDSCENE_API_BASE则是接口地址如果你使用的是兼容OpenAI格式的其他服务商这个地址要换成服务商提供给你的。有些第三方服务支持OpenAI协议但配置时容易漏掉路径比如服务商给的Base URL可能已经是/v1结尾了那就不用再拼一次。不过用export设置环境变量有一个问题它只在当前终端会话里生效关掉终端就没了。如果每次跑脚本都要重新设置非常烦。我建议在项目目录里创建一个.env文件把密钥放在里面然后通过dotenv这个npm包自动加载npm install dotenv然后在.env里写入MIDSCENE_API_KEYsk-你的密钥 MIDSCENE_API_BASEhttps://api.openai.com/v1在Node脚本最顶部加一行require(dotenv).config()环境变量就能自动注入。这样做的好处是密钥不会散落在各个终端历史里项目也更容易迁移到CI环境。4. 跑通第一个自动化脚本4.1 用Chrome扩展快速体验零代码方案在写Node脚本之前我先推荐一个零代码的体验路径装官方Chrome扩展。这是最快感受midscene.js能力的方式适合先确认这个工具值不值得我继续深入。安装好扩展后在浏览器里打开任意网站点开扩展面板输入自然语言指令比如把这个页面里所有价格大于100元的商品名称列出来扩展就会调用AI去理解和执行。这个方式的优点是完全不依赖本地Node环境缺点是只能做体验和简单验证不适合集成到自动化测试流程里。所以我把它定位为环境装好前的试玩工具而不是正式的运行环境。4.2 用Node.js写第一个AI驱动脚本当你确认midscene.js能力符合预期也完成了前面所有环境配置就可以写正式的脚本了。我创建一个agent.js文件内容如下require(dotenv).config(); const { Agent } require(midscene/web); const { initPlaywright } require(midscene/web/playwright); async function main() { const agent new Agent({ model: gpt-4o, openaiApiKey: process.env.MIDSCENE_API_KEY, openaiBaseURL: process.env.MIDSCENE_API_BASE, runBrowser: initPlaywright, }); await agent.connect(https://www.baidu.com); await agent.ai(在页面找到搜索框输入 midscene.js然后按回车); await agent.aiAssert(页面标题或地址包含 midscene); console.log(全部步骤执行成功); await agent.destroy(); } main().catch((err) { console.error(执行失败:, err); process.exit(1); });这段代码做的事情很直白connect打开百度首页ai就是让模型理解并执行一个自然语言指令aiAssert用来做一次断言校验。运行方式node agent.js如果你看到控制台输出全部步骤执行成功恭喜midscene.js的本地运行环境就完全跑通了。4.3 用YAML场景文件组织多步操作单条指令跑通之后你很快会遇到一个需求把多个操作组合成一个完整的业务场景。midscene.js支持用YAML文件来定义场景这样操作步骤可以跟代码分离测试人员也能直接维护。创建一个demo.yamlname: 搜索并检查结果 steps: - go: https://www.baidu.com - ai: 在搜索框输入 midscene.js - ai: 点击百度一下按钮 - sleep: 2 - assert: 页面出现了与 midscene.js 相关的搜索结果用CLI直接执行这个场景文件npx midscene/cli agent ./demo.yamlYAML方式最大的好处是业务语言和技术实现解耦。普通测试同学不需要写JavaScript只要会写自然语言指令就能完成自动化用例的编写。不过我要提醒一点YAML中的ai指令写得好不好直接决定执行的成功率。模型和人一样也需要说人话、说清楚。比如在搜索框输入 midscene.js和找到页面顶部那个输入框往里面输入关键词相比前者还不够明确。你在实践中可以多试几种指令写法找到最适合当前页面的表达方式。4.4 常见参数调整模型选择与页面等待第一个脚本跑通之后有几个参数值得根据实际情况调一调。模型选择方面gpt-4o是闭源模型里效果很稳的选择但如果你有成本考量或者网络环境不允许直连也可以使用其他兼容OpenAI协议的模型服务。关键是在Agent构造时传入的model名称要跟服务商支持的对上。比如用Qwen-VL系列时模型名通常是qwen-vl-plus或qwen-vl-max同时openaiBaseURL也要指向对应的服务商地址。页面等待方面ai指令本身是让模型实时去分析和操作页面所以一般不需要手动加sleep。但有些页面有比较复杂的异步渲染比如数据是从接口加载后动态生成的模型操作前页面可能还没稳定。这时候在YAML里加一个sleep步骤给页面渲染留点时间执行成功率会明显提升。5. 常见问题与排查技巧实录环境搭建过程中我几乎把能踩的坑都踩了一遍。这里整理几个高频问题做成速查表方便你对照处理。问题现象根本原因解决方案node命令不存在Node未安装或未加入PATH重装nvm并用nvm use 20激活安装midscene/web报404npm镜像源未同步临时加--registryhttps://registry.npmjs.orgPlaywright下载Chromium慢/失败网络问题设置PLAYWRIGHT_DOWNLOAD_HOST镜像变量运行时提示缺少API Key环境变量未生效检查.env文件与dotenv加载顺序连接浏览器失败浏览器内核未安装执行npx playwright install chromiumAI步骤一直超时模型接口地址配错或网络不通确认MIDSCENE_API_BASE用curl测试接口连通性模型返回格式错误模型能力不足或提示词不清尝试换更强模型重写更明确的指令除了表格里的常规问题我再分享三个排查经验。第一个经验是先隔离再定位。环境问题容易让人一头雾水但你可以把链路拆成三段Node层、浏览器层、API层。先跑node -v确认Node没问题再跑上一节里那段独立的Chromium启动测试确认浏览器层没问题最后用curl直接请求一下模型API确认鉴权和网络没问题。哪一段挂了就集中排查哪一段不要在一个脚本里把所有可能性混在一起猜。第二个经验是学会看完整错误堆栈。Node报错时经常给一大段堆栈很多人看到就慌。其实大部分错误信息的第一行已经告诉了你原因比如MODULE_NOT_FOUND就是包没装对ENOTFOUND就是域名解析失败。后面的堆栈只是告诉你错误发生在哪个文件第几行对定位问题作用不大。第三个经验是把版本信息固定下来。midscene.js迭代确实快你今天照着文章装的版本和一个月后的最新版API可能有差异。当你在GitHub上提issue或搜解决方案时带上node -v、npm ls midscene/web的输出效率和准确度都会高很多。最后分享一个我自己的小习惯每次搭完这类环境我都会把完整的安装命令和版本信息记到项目的README.md里。因为在我看来本地环境搭好只是开始团队里的其他同事、甚至是三个月后的自己都会需要这份从零到一的记录。把坑提前填平比踩坑之后再爬出来要省时间得多。
返回列表