这些年,电信行业的测试工程师,哪个没被UI自动化折腾过?网上营业厅、手机App,页面三天一小改、五天一大变。Selenium和Playwright脚本写得再溜,也扛不住业务频繁调整和合规要求层层加码——维护成本高、执行脆弱、动不动就崩。直到最近,我用了一款叫 Midscene 的AI驱动测试工具,才发现:原来自动化测试,还可以这么玩!
它不需要你硬啃代码,只需用自然语言告诉它:“登录电信营业厅,查一下套餐余量”,剩下的操作,AI自动规划、执行、生成报告——像对话一样简单,却可靠得让人惊喜。
今天这篇文章,就基于我刚跑通的POC,带你彻底看懂Midscene在电信复杂业务中的实战应用。如果你也在为数字化转型中的测试效率发愁,那么这次分享,可能就是你的突围之路。
一、UI自动化的两大AI技术路径
在电信行业,UI测试往往涉及网页门户(如网上营业厅)和移动App(如流量查询、套餐办理),这些场景变化快、交互复杂。基于AI的自动化方案主要沿着两个方向发展:基于DOM元素定位和基于图像理解+坐标定位。每种路径都有独特优势,我在实际项目中都试过,下面细说。
1. 基于DOM元素定位的技术路径
这种方式的核心是通过浏览器自动化工具(如Playwright或Selenium)实时获取页面的完整DOM结构,包括元素属性、URL、标题等。然后,将DOM树与用户任务描述(如“查询用户本月流量余额”)一起提交给AI模型。AI分析页面结构,理解意图,规划操作步骤,最后通过工具执行模拟点击、输入等操作。
代表工具是BrowserUse(Manus底层就用)。它适合复杂脚本编写场景,比如电信系统多标签页对比账单和套餐。但需要一定的编程能力,执行速度相对较慢,Token消耗较高。优势在于能获取元素的详细属性和层级关系,对文本内容的处理精准,比如精确提取账单数字。但在电信页面频繁变更时,维护成本高,项目中就因为DOM调整花了不少时间,如果不维护就跑失败,非常头痛。
2. 基于图像理解+坐标定位的技术路径
这个路径更接近人类的交互方式:工具截取页面截图,将截图和用户指令(如“点击查询账单按钮”)提交给多模态大模型(如GPT-4o、Qwen-VL)。AI同时分析视觉信息和DOM结构,识别元素位置,返回坐标,然后通过Playwright或Puppeteer执行操作。
Midscene就是典型代表,它更接近真实用户操作视角,对视觉变化适应性强,减少了对DOM的绝对依赖。特别适合现代电信Web应用,那些大量用动态内容和视觉元素的系统,比如App内的套餐可视化图表。我对比BrowserUse后,发现Midscene在定位动态元素时更稳,尤其在桥接模式下,能复用浏览器Cookie,避免重复登录——这在电信测试中超级实用。
BrowserUse和Midscene的对比,我总结成表格,便于大家一看就懂:
方面 |
BrowserUse |
Midscene |
|---|---|---|
优势 |
- 灵活性高:支持Python脚本,适合复杂任务 - 多标签管理:高效处理电信多页对比 - 自定义扩展:如保存账单到数据库 |
- 自然语言YAML脚本:降低门槛,适合非码农测试员 - 多模态理解:视觉+DOM,精准定位动态元素 - 可视化报告:调试套餐查询超方便 |
局限 |
- 学习成本高:需Python和Playwright - 自然语言弱:依赖代码 - 执行慢,Token高 |
- 复杂场景需补代码:如拖拽地图 - 无法访问Chrome原生元素:如右键菜单 - 验证码不稳:OpenAI可能拒绝 |
总的来说,对于电信运营商这类复杂业务系统,Midscene更实用,它让我从代码堆里解放出来,专注业务逻辑。
二、Midscene:用自然语言驱动浏览器
Midscene是一个基于AI的自动化测试平台,核心理念是让测试变得自然易用。它结合计算机视觉和大语言模型,实现自然语言驱动执行。在电信场景下,它的核心优势显而易见:
支持自然语言:测试员用简单描述如“登录电信网上营业厅”或“查询本月账单”,无需复杂代码。我第一次用时,就用它模拟用户充值流程,省了半天脚本时间。
多模态理解:视觉+DOM定位精准,即使页面微调,AI也能认出“流量余量”按钮。
可视化报告:每个步骤有录屏、日志和截图,快速定位问题。比如测试失败时,一看报告就知道是验证码卡住了。
桥接模式:复用现有浏览器会话,避免重复登录,特别适合保持电信账户状态的测试。
官网:https://midscenejs.com/zh/。我强烈推荐,从简单登录测试起步,就能感受到它的魅力。
三、快速上手:5步实现电信Web自动化测试
上手Midscene不难,我一步步带你走。以中国电信网上营业厅为例,测试登录、查询套餐余量和办理流量包。
1. 安装Chrome插件
插件安装地址:
https://chromewebstore.google.com/detail/midscene/gbldofcpkknbggpkmbdaefngejllnief
或者用crx文件拖拽安装(Chrome > 扩展 > 管理 > 拖入)。安装后,右上角图标出现,点击设置,就能配置了。这步我花了3分钟,简单得很。
2. 选择合适的大模型
电信业务页面元素多、动态强,选对模型关键。推荐:
Qwen-2.5-VL(阿里云):开源,专为图像识别设计,支持视觉定位,返回精确坐标。推荐72B版本,准确性和速度平衡好。相比GPT-4o,省30-50% Token,在阿里云部署费用降80%以上。高分辨率输入,够用电信高清页面。开源,能自部署,数据不外泄。
UI-TARS(火山引擎):专为UI自动化,开源,只用截图输入,无需DOM。基准测试顶尖,适合开放任务如“办理流量包”。用目标驱动提示如“用手机号1816365XXXX登录”,它会逐步规划。速度快,原生图像识别,和Qwen类似省Token。开源,自部署安全。
硅基流动:使用Qwen/Qwen2-VL-72B-Instruct模型。在这个网站上注册,替换成你的API_KEY即可https://cloud.siliconflow.cn/i/nRDJFg4z
配置示例(插件设置或.env):
OPENAI_BASE_URL="https://api.siliconflow.cn/v1"OPENAI_API_KEY=""MIDSCENE_MODEL_NAME="Qwen/Qwen2-VL-72B-Instruct"MIDSCENE_USE_QWEN_VL = "1"
我POC中使用的是硅基流动上部署的Qwen/Qwen2-VL-72B-Instruct模型,大家可以参考上面的配置。响应快,适合实时调试电信App兼容性。
插件使用:
Action(AI规划任务,如登录查询);
Query(提取数据,如剩余流量);
Assert(断言,如验证余额);
Tap(点击)。限当前Tab,测试时超便捷。
3. 编写电信业务测试脚本
YAML是灵魂,不码代码。结构:web配置 + tasks数组。
web示例(中国电信):
web:url: https://www.189.cn/viewportWidth: 1366viewportHeight: 768waitForNetworkIdle:timeout: 3000continueOnNetworkIdleError: falsebridgeMode: newTabWithUrl
tasks步骤(每个-开头):
tasks:- name: 登录电信网上营业厅continueOnError: falseflow:- aiTap: 登录按钮- aiInput: 1816365XXXXlocate: 手机号码输入框- aiInput: 您的密码locate: 密码输入框- aiTap: 获取短信验证码- sleep: 5000- aiInput: 123456locate: 验证码输入框- aiTap: 登录确认按钮- aiWaitFor: 页面显示"我的账户"timeout: 10000- name: 查询套餐余量flow:- aiTap: 业务办理菜单- aiTap: 套餐余量查询- aiWaitFor: 显示套餐详情表格timeout: 5000- aiQuery: 提取当前套餐名称、剩余流量、剩余通话时长name: packageInfo- aiAssert: 页面包含"套餐余量"标题errorMessage: 套餐余量查询失败- name: 办理流量加油包flow:- aiTap: 增值业务- aiTap: 流量包办理- ai: 选择10元10G流量加油包- aiWaitFor: 显示办理确认页面timeout: 3000- aiTap: 立即办理- aiWaitFor: 显示办理成功提示timeout: 5000
自动规划(ai)智能但慢;
即时(aiTap等)快准,一Prompt一事。
缓存cacheable: true省Token。
4. 配置环境变量
YAML同级建.env:
OPENAI_BASE_URL="https://api.siliconflow.cn/v1"OPENAI_API_KEY=""MIDSCENE_MODEL_NAME="Qwen/Qwen2-VL-72B-Instruct"MIDSCENE_USE_QWEN_VL = "1"MIDSCENE_CACHE=1TEST_PHONE_NUMBER="1816365XXXX"TEST_PASSWORD="your_password"
加缓存加速重复测试。
5. 运行测试脚本
node.js安装
打开node.js官⽹,下载安装包进⾏安装,⼀切按照默认配置安装即可。
官⽹:https://nodejs.org/zh-cn
安装完成后,cmd中输⼊ node -v 出现版本号即为安装成功。
配置npm的镜像源为国内淘宝镜像地址:
npm configsetregistry https://registry.npmmirror.com
安装命令⾏⼯具
全局安装midscene/cli
npm i -g @midscene/cli
运行:
无头模式midscene ./telecom_test.yaml显示浏览器midscene ./telecom_test.yaml --headed桥接模式midscene ./telecom_test.yaml --bridge
报告在midscene_run/report,有录像和日志。我用--headed调试,桥接复用Cookie,测试已登录状态超省时。开启MIDSCENE_CACHE=1,重复测试快多了。
四、Android自动化测试同样简单
Midscene支持Android,配置JDK(java -version检查)和ADB(ANDROID_HOME环境变量,Path加platform-tools等)。连手机开启USB调试,adb devices验证。
示例(telecom_app.yaml,中国电信App余额查询):
YAML:
android:launch: com.chinatelecom.bestpay # 中国电信App包名tasks:- name: 登录和余额查询flow:- ai: 打开中国电信APP- aiInput: 1816365XXXXlocate: 手机号输入框- aiInput: 密码123456locate: 密码输入框- aiTap: 登录按钮- aiWaitFor: 首页加载完成- aiTap: 查询余额- aiAssert: 显示余额信息errorMessage: 余额查询失败
运行同Web,加.env的ANDROID_HOME如果提示找不到。装Playground调试:npx --yes @midscene/android-playground。我在电信App充值测试中,用它模拟手势,效率高。
五、局限性及应对策略
Midscene强大,但有局限,我项目中遇到过:
不支持Chrome原生元素:如文件上传对话框、右键菜单。应对:用传统input操作绕过,或JS补。
无法处理复杂验证码:图形码难。应对:测试环境禁用,或用识别服务。
复杂交互支持有限:拖拽、手势需代码。应对:自定义JS函数。
大模型推理耗时:实时性高场景慢。应对:设超时,用缓存。
了解这些,能避坑。
六、提示词编写技巧:让AI更懂你
提示词是关键,我总结几招:
指令要具体明确:不佳:“查询账单”。推荐:“在页面顶部的查询菜单中选择'月度账单',选择2025年1月,点击查询按钮”。加细节,AI准度up。
多用即时操作提高精度:ai规划如- ai: 点击登录按钮慢;即时如- aiTap: 登录按钮快准,只定位不规划。
单一职责原则:不堆指令如- ai: 登录并查询余额然后办理套餐;分步:- aiTap: 登录按钮、- aiInput: 1816365XXXX locate: 手机号输入框、- aiTap: 查询余额。
善用断言验证结果:操作后加- ai: 完成套餐办理、- aiAssert: 页面显示办理成功提示且包含订单编号 errorMessage: 套餐办理失败。AI出错时,这步救场。
看报告分析规划/定位出错,加细节优化。积累提示词库,项目中我建了个共享文档。
七、总结
技术终究要回归于人。Midscene 这样的AI自动化工具,正悄悄改变电信测试的游戏规则——它让我们从“选择器维护师”重新变回“业务测试专家”,从重复低效中解放出来,转向更高价值的场景探索与质量洞察。
我的实践表明:仅初步使用Midscene,脚本编写效率就提升了3倍以上,维护成本大幅下降,非技术人员也能快速上手写用例。这已不仅是工具升级,更是一场测试理念的进化。
如果你也在运营商、金融、ERP或其他复杂业务领域苦于UI自动化,不妨从今天开始:
安装Midscene插件,用自然语言写第一个测试脚本;
从小场景验证,逐步扩展到核心业务流程;
建立团队内的提示词库与最佳实践。
AI不会取代测试工程师,但会用AI的测试人,必将淘汰那些仍停留在“手工+硬编码”时代的团队。如果您有更好的想法或实践,欢迎一起探讨!也欢迎板砖!

