零基础新手,最大的学习障碍是"恐惧感"!
上一篇,我们以AI编程切入,手把手带大家如何在10分钟内做出第一个应用,并且如何将它部署到互联网上。
不需要你有任何编程基础,只要你会打字、会上网,就能跟着做。通过第一个项目,帮助大家建立Vibe Coding 的思维方式:关注 "要做什么" 而不是 "怎么做"。
今天是牛刀小试的第二篇,我们来聊一聊AI测试,带大家感受一下AI在测试领域带来的魅力。
同样,在这篇教程中,我们不聊AI测试的相关理论、晦涩难懂的技术,聊聊AI在UI自动化测试的一些新玩法、思路。
本文为试读,原文发布到「狂师.AI进化社」教程专栏中,会有更加详细的AI测试教程,阅读体验更佳~
1、传统UI测试工具是怎么做自动化的?
传统 UI 自动化测试,核心是通过代码/脚本对页面元素做 "定位 -> 操作 -> 断言" 的程序化模拟,本质是用机器替代人工的手工点击、输入、校验操作,实现回归测试、重复场景测试的自动化执行,整体围绕 "元素定位" 这个核心展开,步骤固定且对页面稳定性要求极高。
而传统 UI 自动化测试工具(如 Selenium、Appium、Playwright、Robot Framework 等),无论开源还是商用,实现思路基本一致,大体可以分为几步:
1.1 搭环境与工具适配
根据被测应用的类型(Web 端 / 移动端 APP / 小程序)选择对应工具,比如:
- Web 端,一般首选用
Selenium/Playwright - 移动端用
Appium, - 低代码封装用
Robot Framework;
同时搭建配套环境,比如 Web 端需要配置浏览器驱动(ChromeDriver/GeckoDriver)、移动端需要配置模拟器/真机+ADB环境,再结合 Python/Java/JavaScript等开发语言,搭建基础的自动化测试框架。
1.2 定位页面元素
工具无法像人一样 "看" 到页面上的按钮、输入框、下拉框,只能通过页面元素的唯一标识来识别,这是所有自动化操作的前提。测试人员需要通过浏览器开发者工具(F12)/APP元素探查工具(UIAutomatorViewer),提取元素的专属属性,常用定位方式按优先级排序:
-
精准定位:id、name(唯一属性,优先级最高,最稳定);
-
通用定位:xpath、css selector(支持路径 / 属性匹配,适配无 id/name 的元素,如
//input[@placeholder='请输入账号']); -
兜底定位:class name、tag name、link text(易重复,仅用于无其他属性的场景)。
核心要求 :元素必须有稳定的标识,一旦元素属性被开发修改(如 id 从btn-login改成btn-login-new),脚本就会 "找不到元素",直接执行失败。
1.3 开发自动化执行脚本
基于选定的语言和工具,编写脚本模拟人工操作,核心逻辑是 "操作链 + 校验点",主流有两种开发模式:
- 线性脚本:按手工测试的步骤依次编写,如 "打开浏览器→输入网址→点击账号输入框→输入账号→点击密码框→输入密码→点击登录按钮",适合简单的单流程场景;
- 模块化/关键字驱动:将重复操作封装成公共模块(如 "登录模块""退出模块"),用例直接调用模块,减少代码冗余,适合大型项目的批量用例开发。
并且,因为页面加载、接口请求会存在延迟和偶发性,为了确保脚本的稳定性,脚本中除了会包含操作指令(click/input/clear/select)等,必须加等待避免工具 "提前操作" 导致的失败------ 实际则需要,根据不同的场景引入不同的等待机制(强制等待/显式等待/隐式等待)。
1.4 执行测试
运行编写好的脚本,工具会自动驱动浏览器/模拟器,按脚本步骤执行操作;执行到关键节点时,会通过断言语句校验实际结果是否符合预期,比如 "登录后是否跳转到首页""点击提交后是否显示'提交成功'提示""列表是否加载出指定数据",断言通过则用例成功,失败则终止并记录错误。
1.5 生成测试报告与问题排查
执行完成后,可以是由工具来自动生成报告,也可以是人工来整理报告。
测试人员需要根据报告来排查问题,如区分是脚本问题 (定位方式错误)、页面问题 (元素属性修改)还是工具环境问题(驱动版本不兼容),再针对性修改。
2. 传统UI自动化的核心痛点
正因为传统UI自动化工具,主要是依赖 "固定元素定位" 和 "死板脚本逻辑",导致在如今快敏捷开发、高频迭代的场景中,暴露了诸多难以解决的问题:
-
元素定位依赖"硬编码" :传统的UI自动化测试工具,比如Selenium、Appium、Playwright等,通常需要通过ID、Class、Xpath等固定的元素属性来定位元素,但前端开发常因需求调整修改DOM结构(比如组件库升级、样式优化、布局调整),导致元素ID、Class这类属性可能会出现动态变化,脚本极易因为这些变化,导致"找不到元素",据统计,企业级项目中约
40%-60%的UI自动化用例失败源于元素定位失效,而非真实功能缺陷。 -
维护成本极高:开发迭代会频繁修改页面元素属性、调整页面布局,测试人员需要同步修改所有相关脚本的定位方式,迭代越快,维护工作量越大,甚至出现 "维护脚本的时间超过开发脚本的时间";
-
对非标准元素无能为力:无法识别图片、验证码、动态生成的元素(如随机 id、动态弹窗),遇到这类场景只能通过人工介入或额外的破解方案,自动化覆盖率受限;
-
学习门槛不低:需要掌握开发语言(Python/Java)、工具 API、框架封装,非技术背景的测试人员难以上手;
-
无法像人一样 "认知" 页面:工具只能识别元素属性,无法理解页面的语义和逻辑,比如 "红色的提交按钮""位于页面底部的分页栏",一旦元素位置变化,即使属性不变,也可能因脚本逻辑问题执行失败。
3. AI技术在UI自动化测试的六种玩法
针对上述问题,AI 在 UI 自动化测试中的应用,可以有很多种组合玩法。
核心是通过大语言模型(LLM) 、计算机视觉(CV)、自然语言处理(NLP)、机器学习(ML) 等技术,解决传统方案中"元素定位难、脚本维护成本高、跨端兼容性差、人力依赖强"等问题。
有了AI的融入,自动化测试,不再是依赖 "固定元素属性",而是让测试工具像人一样 "看" 页面、"理解" 页面、"推理" 操作逻辑。
以计算机视觉(CV) 和自然语言处理(NLP) 为代表的AI技术为例,可以通过"感知界面内容+理解用户意图"的方式,推动UI自动化测试从"硬编码规则驱动"向"认知驱动"转型,其核心理念可概括为:让测试系统像人类一样"看懂界面""听懂需求",并自主完成操作与验证。
玩法 1:利用AI 视觉定位 ------ 替代传统元素定位
基于计算机视觉(CV)+ 图像识别 技术,让测试工具不再依赖元素的 id/xpath 等固定属性,而是像人一样通过 "视觉特征" 识别元素,比如 "页面顶部的蓝色登录按钮""中间的白色输入框,占位符是请输入手机号""右下角的红色提交按钮"。
- 实现方式:测试人员只需用自然语言描述元素(或直接在页面上框选元素),AI 会提取元素的视觉特征(颜色、形状、位置、文字内容),生成唯一的视觉定位标识,即使元素属性被修改、位置被调整,只要视觉特征不变,工具就能精准识别;
- 适配场景:高频迭代的页面、动态生成元素的场景、无标准属性的小众页面,彻底解决传统方案 "元素定位失效" 的核心痛点,大幅降低脚本维护成本。
玩法 2:自然语言生成自动化用例 ------ 让人人都能做自动化
基于大语言模型(LLM) ,实现 "自然语言描述需求→AI 自动生成自动化脚本 / 用例",彻底降低自动化的学习门槛,非技术背景的测试人员、产品经理甚至开发,都能快速制作自动化用例。
- 实现方式:测试人员只需用日常语言描述测试场景,比如 "打开 XX 网站,输入账号 admin、密码 123456,点击登录,校验是否跳转到首页,是否显示用户名 admin",AI 会自动识别场景中的操作步骤、校验点,结合对应的测试工具(Selenium/Playwright),生成可直接运行的自动化脚本,还能自动添加等待机制、断言语句;
- 延伸能力:还可以通过 "上传手工测试用例文档→AI 批量解析生成自动化用例",实现用例的批量转化,大幅提升自动化覆盖率的转化效率。
玩法 3:AI 智能维护脚本 ------ 自动化适配页面变化
这是针对传统 "脚本维护成本高" 的核心优化,基于LLM + 视觉对比技术,让测试脚本具备 "自我修复" 能力,页面发生变化时,AI 会自动识别并修改脚本,无需人工介入。
- 实现方式 1:脚本执行失败时,AI 会自动分析失败原因(如 "元素属性修改""元素位置变化"),对比新旧页面的元素特征,自动更新脚本中的定位方式,再重新执行用例;
- 实现方式 2:开发提交代码后,AI 会自动对比迭代前后的页面差异,识别出被修改的元素,批量更新所有相关的自动化脚本,实现 "页面变,脚本自动变"。
玩法 4:AI 驱动的探索式测试 ------ 全自动覆盖页面场景
传统自动化只能执行 "预设好的脚本",覆盖的场景有限,而基于多模态 AI + 强化学习 的探索式测试,让工具能像资深测试工程师一样,自主探索页面的所有功能场景,自动执行操作、校验结果,发现人工测试和传统自动化容易遗漏的 BUG。
- 实现方式:AI 先通过视觉识别和语义理解,分析页面的所有元素(按钮、输入框、下拉框、链接等)和业务逻辑,生成合理的测试路径;然后自主执行操作(如随机点击、输入不同类型的数据、触发不同的交互组合),同时实时校验页面的响应结果(如是否报错、是否跳转到错误页面、数据是否显示异常),发现问题后自动截图、记录日志并标记 BUG 等级;
- 核心价值:适合在新版本上线前,快速做全量场景的探索式测试,覆盖人工难以考虑到的边界场景、组合场景,提升测试的完整性。
玩法 5:AI 生成测试数据 ------ 自动化适配场景造数据
传统自动化测试中,测试数据(如账号、手机号、身份证号、订单号)需要人工准备或通过代码生成,而 AI 能根据测试场景,智能生成贴合业务的真实测试数据,还能自动适配边界值、异常值场景。
- 实现方式:测试人员只需描述数据需求,比如 "生成 10 个有效的手机号""生成 5 个不符合格式的身份证号""生成 3 个符合电商平台规则的订单号,包含字母和数字",AI 会自动生成对应的测试数据,还能直接将数据注入到自动化脚本中,实现 "数据 + 脚本" 的一体化执行。
玩法 6:多模态 AI 测试 ------ 覆盖跨端 / 非标准 UI 场景
传统工具对图片、视频、小程序、H5 混合页面 等非标准 UI 场景的覆盖率极低,而基于多模态大模型的 AI 测试,能融合 "视觉、文本、语音" 等多种信息,实现跨端、非标准 UI 场景的自动化测试。
- 适配场景:识别页面中的图片验证码并自动破解、测试小程序中的图文混合模块、测试 APP 中的语音交互功能、测试电商平台的商品图片展示和点击功能等,彻底打破传统 UI 自动化的场景覆盖限制。
除了上述提到的六种AI玩法外,其实还有很多,这里就不一一列举了,后面将会在「狂师. AI进化社」中,逐步分享。
4. AI测试工具
讲到这里,你可能会说,上面这些AI测试的玩法是不是都还是停留在理论层面,属于理想测试的状态吧,但现实是,你或许还停留在"井"里,事实是,已经有很多先辈,利用上面的这些AI玩法,已经在2倍、10倍、提升工作效能了。
要实现上述的这些玩法,有两种方式:
- 自己利用AI技术,自己开发,自己定制。(灵活度高,对技术要求也高)
- 用现有的AI测试工具。(缺点有什么,用什么,优点是快,开箱即用)
目前,市面上的AI测试工具有很多,在我之前公众号技术推文分享中,也给大家推荐过一些,比如Testim、Applitools、Browser Use、Midscene、Playwright MCP等。
如果是你是AI零基础新手,此前,从来没有接触过AI测试工具,那我强烈你先使用Midscene。
Midscene作为AI测试工具中的典型代表,它更接近真实用户操作视角,对视觉变化适应性强,减少了对DOM的绝对依赖,相比有些AI测试工具来说,它在定位动态元素时更稳定,尤其在桥接模式下,还能复用浏览器Cookie,避免重复登录的问题。
接下来,我就以Midscene 为例,来带大家感受一下Midscen`做UI自动化测试的魅力,不需要你写一行代码,不需要你定位元素,你只需要描述需求,指拿打拿,任何人都可以用它来开展自动化测试。
其它的AI测试工具,后续会逐步分享到狂师.AI 进化社 ->AI工具百宝箱对应的版块中。
5. 带你快速体验 Midscens
由于本篇教程,并不是专门讲解Midscens的特性,主要是让大家提前感受一下AI测试所带来的实际效果。
所以不会,花太多内容篇符来介绍Midscens特性,具体关于Midscens的工具介绍,后续在AI进化社中,会有专门工具教程分享。
为了照顾新手,还是简单科普一下:
Midscens,更具体一点的叫法,是
Midscene.js,由字节跳动的Web Infra团队开发(一个负责字节内部Web基础设施效能提升的团队)。定位:是一款 AI驱动的自动化测试工具,且是开源的。
它通过多模态大语言模型(LLM)实现对用户界面的"理解",并自动执行端到端(e2e)测试任务,核心特点是能够直接解析 UI 元素的视觉和语义信息,模拟用户操作行为。
简单来说 :Midscene.js 是一个让使用者,直接用自然语言的方式描述 UI 操作,由 AI帮你自动定位元素、生成脚本、执行测试"的智能 UI 自动化工具。人提需求,AI帮你自动执行测试,本质上和AI 编程的思想是一样的。

更进一步的介绍,感兴趣的话,可以访问它的官网来学习:https://midscenejs.com/
这里,值得再提一点的是,Midscene.js虽最初是为Web自动化测试而设计的,但它也同样支持Android、iOS等多端应用,任意界面都可以。

说了,这么多,新手该如何使用呢?概括起来,分几步:
5.1 环境准备
Midscene.js,提供了多种集成使用方式:
- 浏览器插件
- 与 Playwright的SDK集成(又分为两种:一种直接用脚本方式集成和调用
Midscene Agent,另外一种在Playwright的测试用例中集成Midscene模块) - 与Puppeteer的SDK集成 (也有两种集成方式,可参考Playwright,同上)
- 命令行调用
- API调用
需要注意,不同端,需要准备的环境会有所不一样,新手优先推荐以Web端+浏览器插件 使用方式为主,通过使用Midscene.js Chrome插件,你可以快速在任意网页上体验 Midscene 的主要功能,而无需编写任何代码。
其它的集成方式,以及Android、iOS端如何使用Midscene,后面会根据MVP迭代的安排,逐步在AI 工具百宝箱版块内更新,大家感兴趣的话,也可以提前查看官方帮助文档,官方文档里也提供了很多实战案例。
5.2 安装方法
如果想通过 Midscene.js Chrome 插件快速体验AI测试的话,我们需要先前往 Chrome 扩展商店安装 Midscene 扩展

或者直接在github中下载releaese压缩包,直接拖到chrome浏览器扩展程序页中,即可安装
https://github.com/web-infra-dev/midscene/releases

插件安装完成后,启动扩展(可能默认折叠在 Chrome 扩展列表中),你应该能在浏览器右侧看到名为 "Midscene" 的侧边栏。

5.3 AI模型选择
安装完Midscene插件之后,你还无法立即正常使用它来开展自动化测试,因为你此时只是安装了一个躯壳,还没有指挥大脑,而这个大脑,就是我们常说的大模型。
讲到这里,就不得不提一句 AI 工具的核心本质:几乎所有的 AI 测试工具,乃至各类 AI 编程工具,本质上都只是做了一层面向用户的交互应用层封装,其核心能力的实现,底层终究需要依托特定的大模型来驱动。而一款 AI 测试工具的实际使用效果好坏,也正与它背后选用的大模型能力强弱、适配性高低息息相关。
而使用 AI 大模型驱动 UI 自动化的有两个关键点:规划合理的操作路径,以及准确找到需要交互的元素。其中"元素定位"能力的强弱,会直接影响到自动化任务的成功率。
为了完成元素定位工作,UI 自动化框架一般有两种技术路线:
- 基于 DOM + 截图标注:提前提取页面的 DOM 结构,结合截图做好标注,请模型"挑选"其中的内容。
- 纯视觉:利用模型的视觉定位能力,基于截图完成所有分析工作,即模型收到的只有图片,没有 DOM,也没有标注信息。
1. Midscene 支持纯视觉元素定位
Midscene 早期同时兼容「DOM 定位」和「纯视觉」两种技术路线。
但DOM 定位方案的稳定性不足,经常会在 Canvas 元素、CSS background-image 绘制的控件、跨域 iframe 中的内容、没有充分被辅助技术标注的元素等情况下出现定位偏差。
与此同时,采用「纯视觉」方案,相对于DOM定位方案来说,优势明显,主要体现在:
- 效果稳定:在 UI 操作规划、组件定位、界面理解等领域的综合表现较好,能够帮助使用者更快上手。
- 适用于任意系统:自动化框架不再依赖 UI 渲染的技术栈。无论是 Android、iOS、桌面应用,还是浏览器中的 canvas 标签,只要能获取截图,Midscene 即可完成交互操作。
- 易于编写:抛弃各类 selector 和 DOM 之后,使用者与模型的"磨合"会变得更简单,不熟悉渲染技术的新人也能很快上手。
- token 量显著下降:相较于 DOM 方案,视觉方案的 token 使用量最多可以减少 80%,成本更低,且本地运行速度也变得更快。
因此,从 1.0 版本开始,Midscene 只支持纯视觉方案,在UI操作与元素定位方面,不再提供"提取 DOM"的兼容模式。
2. Midscene推荐使用的视觉模型
使用Midscene,选择模型时,也是有讲究的,并不是随便找个大模型都可以用,必须使用多模型模型,也就是需要支持图像输入,视觉能力的模型才可以。
官方,推荐使用 Midscene 的默认模型有:
这些模型都具备良好的"元素定位"能力,且在任务规划、界面理解等场景上也有不错的表现。如果你不知道从哪里开始,选用你眼下最容易获得的模型即可。
| 模型系列 | 部署 | Midscene 评价 |
|---|---|---|
| 豆包 Seed 模型 快速配置 | 火山引擎版本: Doubao-Seed-1.6-Vision | ⭐⭐⭐⭐ UI 操作规划、定位能力较强 速度略慢 |
| 千问 Qwen3-VL 快速配置 | 阿里云 OpenRouter Ollama(开源) | ⭐⭐⭐⭐ 复杂场景断言能力不够稳定 性能超群,操作准确 有开源版本(HuggingFace / Github) |
| 千问 Qwen2.5-VL 快速配置 | 阿里云 OpenRouter | ⭐⭐⭐ 综合效果不如 Qwen3-VL |
| 智谱 GLM-4.6V 快速配置 | Z.AI (Global) BigModel (CN) | 全新接入,欢迎体验 模型权重开源HuggingFace |
| Gemini-3-Pro / Gemini-3-Flash 快速配置 | Google Cloud | ⭐⭐⭐ 支持 Gemini-3-Flash 价格高于豆包和千问 |
| UI-TARS 快速配置 | 火山引擎 | ⭐⭐ 有探索能力,但在不同场景表现可能差异较大 有开源版本(HuggingFace / Github) |
如果你完全没有头绪,我推荐选择千问 Qwen3-VL或智谱 GLM-4.6V。
5.4 模型配置
1. 申请大模型API KEY
以千问 Qwen3-VL为例。
1、访问DashScope管理控制台
https://dashscope.console.aliyun.com/

2、点击开通服务(DashScope 模型服务),跳转到阿里云百炼平台

3、开通之后,新用户每个模型都会赚送100w的免费体验额度

在阿里云百炼模型广场中,可以查看到所有支持的模型

比如我们要选用的qwen3-vl-plus,这个是通义千问推出来的新版视觉理解模型,如果你不清楚,你能不能用这个模型,可以点击进入看一下还有没有免费额度

如果免费额度用完了,还想用,也可以再花点小钱,购买它的token套餐。
4、选择密钥管理->创建API KEY

复制API Key,不要泄露给别人,自己拿个小本本记下来就行

2. 配置环境变量
有了API Key之后,需要将模型配置参数项放置在系统环境变量中,Midscene 会自动读取这些环境变量。
配置环境变量常用的有两种方式:
- 在
Midscene Chrome插件中,你也可以使用这种export KEY="value"配置格式
bash
# 替换为你自己的 API Key
export MIDSCENE_MODEL_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
export MIDSCENE_MODEL_API_KEY="sk-abcdefghijklmnopqrstuvwxyz"
export MIDSCENE_MODEL_NAME="qwen3-vl-plus"
export MIDSCENE_MODEL_FAMILY="qwen3-vl"

- 在项目的运行路径下创建一个
.env文件,并添加以下内容,Midscene 的命令行工具默认会读取这个文件。(该种方式适用于命令行工具)
BASH
MIDSCENE_MODEL_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
MIDSCENE_MODEL_API_KEY="sk-abcdefghijklmnopqrstuvwxyz"
MIDSCENE_MODEL_NAME="qwen3-vl-plus"
MIDSCENE_MODEL_FAMILY="qwen3-vl"
请注意:这里不需要在每一行前添加
export,且只有 Midscene 命令行工具会默认读取这个文件
5.5 快速体验
讲到这里,所有的准备工作,都已经做好了,想必此时的你,已经迫不及待,要体验一下Midscene了。
1、在Midscene输入框中,输入提示词指令:打开浏览器,访问百度页面,在输入框中Python,点击搜索,选择第一个Action类型,可以理解,该类型会根据你的需求自动帮你规划,执行,有点类似Agent一样。

几个常用的操作类型:
- Action:AI自动规划执行任务
- Query:常用于提取数据
- Assert:常用于断言
- Tap(点击):用于点击操作
2、当点击运行后,Midscene会根据我们的指令意图,帮我们自动规则任务,执行操作,比如打开百度,自动找到百度页面的输入框,并输入Python,点击搜索等的操作。所有的控制过程,都不需要我们自己写代码,找元素定位,你只需要将你的要求用自然语言描述出来就可以了。
具体执行效果,大家可以看这个动画视频,也可自行在本地尝试运行。
这里面有一个小坑,如果你打开的是一个空网页,即地址栏为空时,发送指令时,会报错Cannot access a chrome:// URL

也就意味着,大家用Midscene浏览器插件进行AI自动化时,要先停留在某个页面,至少要确保地址栏不能为空,这个有点小鸡肋。当然影响不大,看官方后续会不会优化一下吧。
3、除了这种常规用法,Midscene还支持桥接模式连接,Midscene Chrome 插件的桥接模式允许你使用本地脚本来控制桌面版 Chrome。脚本既能连接新标签页,也可以附着到当前激活的标签页。这种方式能复用本地浏览器的 cookies、插件和页面状态,与自动化脚本协作完成任务;在自动化领域也被称作 "man-in-the-loop"。
为什么需要桥接模式呢? 因为正常情况下,Midscene每次执行任务都会先打开一个全新的浏览器窗口,但很多场景下,操作页面都需要进行用户登录认证,通过桥接模式连接,可以直接复用本地已有的Cookie和页面状态,不必在执行AI测试任务期间手工来完成登录操作。

运行任务前,先点击 "Allow connection" ,执行后你会看到插件状态变为 "connected"

讲到这里,你已经基本掌握了如何利用插件的方式来简单使用Midscene了,但还不够。
5.6 进阶使用
前面我们已经学习了,如何通过Chrome浏览器插件的方式来使用Midscene了,但这种方式比较鸡肋,不太适合规划化 、持久化 、资产化。
怎么理解呢?
你想,我们利用Midscene开展自动化时,总不能每次在执行自动化测试之前,还要人工手动打开浏览器插件,把指令手工喂给它吧,那这不叫自动化测试!
自动化测试,最起码的一点要求,前期只要准备好了测试脚本或AI指令提示词,后续的所有执行动作,都应该是不需要人为介入的。
还有更重要的一点,浏览器插件的这种方式,我们很难在企业中,将业务测试用例持久化、资产化复用起来。
所以接下来,我再花一点点时间,分享一下,Midscene另外的一种进阶用法:命令行+配置文件的方式。
简单来说,Midscene 定义了一种 YAML 格式的脚本,可以让开发者快速编写自动化脚本,并提供了对应的命令行工具来快速执行这些脚本。
如果说插件的方式,只是为了提供给使用者简单体验一下,那命令行+配置文件方式,就比较适合企业内正式使用了。
1. 如何上手
1、全局安装 @midscene/cli (推荐新手使用):
npm i -g @midscene/cli
或在项目中按需安装
npm i @midscene/cli --save-dev
2、新建一个项目目录,在目录下编写YAML配置文件,可以理解为YAML配置文件就是midscene的测试脚本,比如创建一个名为 bing-search.yaml 的文件:
YAML
web:
url: https://www.bing.com
tasks:
- name: 搜索天气
flow:
- ai: 搜索 "今日天气"
- sleep: 3000
- aiAssert: 结果显示天气信息
3、在项目目录,创建.env文件,配置AI模型驱动的环境变量信息
bash
MIDSCENE_MODEL_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
# 替换成自己的API KEY
MIDSCENE_MODEL_API_KEY="sk-abcdefghijklmnopqrstuvwxyz"
MIDSCENE_MODEL_NAME="qwen3-vl-plus"
MIDSCENE_MODEL_FAMILY="qwen3-vl"
4、通过命令行来执行它:
bash
midscene ./bing-search.yaml
# 如果在项目中安装了 Midscene
npx midscene ./bing-search.yaml

5、在配置文件中,如果涉及到一些动态变量,可以通过 ${variable-name} 引用环境变量来实现,如:
topic=weather today
# ...
- ai: 在输入框中输入 ${topic}
# ...
6、@midscene/cli 支持使用通配符匹配多个脚本来批量执行脚本,这相当于 --files 参数的简写。
# 运行单个脚本
midscene ./bing-search.yaml
# 使用通配符模式运行所有匹配的脚本
midscene './scripts/**/*.yaml'
7、执行完成后,输出目录会包含:
--summary指定的 JSON 报告(默认index.json),记录所有脚本的执行状态与统计数据。- 每个 YAML 文件对应的独立执行结果(JSON 格式)。
- 每个脚本生成的可视化报告(HTML 格式)。

8、默认情况下脚本是在无头模式下运行,如果想打开浏览器窗口,可以带上Headed参数
bash
# 运行在 headed 模式
midscene /path/to/yaml --headed
# 运行在 headed 模式并在结束后保留窗口
midscene /path/to/yaml --keep-window
9、如果你想在脚本中,使用桥接模式让 YAML 脚本驱动现有的桌面浏览器,复用 Cookies、插件或已有状态。先安装 Chrome 扩展,然后在 web 配置中加入:
web:
url: https://www.bing.com
+ bridgeMode: newTabWithUrl
2. 命令行参数
命令行工具提供了多项参数,用于控制脚本的执行行为:
--files <file1> <file2> ...:指定脚本文件列表。默认按顺序执行(--concurrent为1),可通过--concurrent设置并发数量。支持 glob 通配符语法。--concurrent <number>:设置并发执行的数量,默认1。--continue-on-error:启用后,即使某个脚本失败也会继续执行后续脚本。默认关闭。--share-browser-context:在多个脚本之间共享浏览器上下文(Cookies、localStorage等),适合需要连续登录态的场景。默认关闭。--summary <filename>:指定生成的 JSON 总结报告路径。--headed:在带界面的浏览器中运行脚本,而非默认的无头模式。--keep-window:脚本执行完成后保持浏览器窗口,会自动开启--headed模式。--config <filename>:指定配置文件,文件中的参数会作为命令行参数的默认值。--web.userAgent <ua>:设置浏览器 UA,覆盖所有脚本中的web.userAgent。--web.viewportWidth <width>:设置浏览器视口宽度,覆盖所有脚本中的web.viewportWidth。--web.viewportHeight <height>:设置浏览器视口高度,覆盖所有脚本中的web.viewportHeight。--android.deviceId <device-id>:设置安卓设备 ID,覆盖所有脚本中的android.deviceId。--ios.wdaPort <port>:设置 WebDriverAgent 端口,覆盖所有脚本中的ios.wdaPort。--ios.wdaHost <host>:设置 WebDriverAgent 主机地址,覆盖所有脚本中的ios.wdaHost。--dotenv-debug:开启 dotenv 的调试日志,默认关闭。--dotenv-override:允许 dotenv 覆盖同名的全局环境变量,默认关闭。
比如,使用 --files 指定执行顺序:
bash
midscene --files ./login.yaml ./buy/*.yaml ./checkout.yaml
midscene支持并发运行,如以 4 个并发执行所有脚本,并在出错时继续运行:
bash
midscene --files './scripts/**/*.yaml' --concurrent 4 --continue-on-error
还可以把参数写到 YAML 配置文件中,并通过 --config 引用,命令行传入的参数优先级高于配置文件。
bash
files:
- './scripts/login.yaml'
- './scripts/search.yaml'
- './scripts/**/*.yaml'
concurrent: 4
continueOnError: true
shareBrowserContext: true
运行方式:
bash
midscene --config ./config.yaml
好了,通过学习Chrome插件和命令行的这两种方式,我相信你,已经可以完全能上手操作midscene,还在等什么🤣,赶紧体验一下AI测试的乐趣吧。
除了文中提到的,midscene还有很多高级的进阶玩法,后面会统一分享到AI进化社内。
6. 最在最后
在牛刀小试版块,特意挑选了AI编程 和AI测试两个场景下的小案例,通过在10分钟内完成第一个AI应用并上线,体验AI编程(Vibe Coding)、AI测试的核心魅力,帮助大家建立对AI能力的直观认知。(当然,目前你所看到的也才只是AI能力的冰山一角)
回归标题,别再只做点点点的重复劳动!AI+LLM 测试的强大,核心就在于重构了测试的核心逻辑!不管AI技术发展如何强大,但技术终究要回归于人。
而以 Midscene 为代表的 AI 自动化工具,正彻底改写传统测试、传统编程的游戏规则。它让测试人员、开发人员从纠结 "怎么做 " 的技术细节里抽离,聚焦于 "要做什么" 的核心需求,真正从重复低效的手工操作中解放出来,将精力投入到更高价值的业务场景探索、产品质量深度洞察中,而这恰恰才是 AI+LLM 测试的真正魅力。
我的实践表明:仅初步使用Midscene,脚本编写效率就提升了3倍以上,维护成本大幅下降,非技术人员也能快速上手写用例。这已不仅是工具升级,更是一场测试理念的进化。
如果你还在苦于UI自动化,不妨从今天开始:
- 安装Midscene插件,用自然语言写第一个测试脚本;
- 从小场景验证,逐步扩展到核心业务流程;
- 建立团队内的提示词库与最佳实践。
AI不会取代测试工程师,但会用AI的测试人,必将淘汰那些仍停留在"手工+硬编码"时代的团队。如果您有更好的想法或实践,欢迎一起探讨!也欢迎板砖!😄