传统的 UI 自动化测试工具通常需要开发者编写大量的选择器代码来定位页面元素,维护起来比较麻烦。最近发现了一个有趣的工具 Midscene.js,它基于 AI 技术,允许我们用自然语言来描述测试操作,比如”点击登录按钮”、”在用户名框输入 admin”等。
今天就来体验一下这个工具,看看它的实际效果如何。
首先,先用 React 写一个简单的注册页面:
然后,搭建好 Playwright 环境,并集成 Midscene.js,写一个简单的 test case:
1 | import {test as base} from '@playwright/test' |
执行 npx playwright test
,可以看到执行成功,并生成了报告:
打开报告,可以查看执行过程:
也可以执行 npx playwright test --ui
打开交互界面:
如果你不想手动写测试用例,还可以使用 Midscene 提供的 MCP Server,让 AI IDE 来帮我生成,下面以 Cursor 为例。
首先安装 Midscene 的浏览器插件
安装 MCP Server
1 | "mcp-midscene": { |
- 打开插件,点击 “allow connection”
- Cursor 中输入如下提示词:
1 | 帮我填写这个表单@http://localhost:5173/#,字段值: |
执行过程如下:
生成的测试用例如下:
1 | test('register', async ({aiInput, aiTap, aiAssert, aiWaitFor}) => { |
可以看到,生成的用例跟我自己写的差不多,甚至更好。
接下来试试稍微复杂点的 UI,把性别换成下拉选择,然后把选择性别的代码改成:
1 | // 选择性别为男 |
然而,这种方式是没有用的,观察执行过程发现 await aiTap('请选择性别')
这一句点击的位置没问题,但就是无法弹出下拉选择框。
试了下,在浏览器中通过调用元素的 click
事件也是不行的:
像这种情况,直接给字段赋值就可以了:
1 | await aiInput('男', '性别') |
通过这次体验,我们可以看到 Midscene.js 确实带来了一些令人兴奋的改变:
开发体验优秀:使用自然语言描述测试步骤,代码更易读、易写,大大降低了编写测试用例的门槛。
AI 生成能力强大:借助 MCP Server 和 AI IDE,能够直接从需求描述生成高质量的测试用例,这对提升测试效率很有帮助。
总的来说,Midscene.js 是一个非常有前景的 UI 自动化测试工具。它完美地将 AI 能力与传统测试框架结合,既保留了像 Playwright 这样成熟框架的优势,又通过 AI 能力大幅提升了开发体验。对于想要提高测试效率、降低维护成本的团队来说,不妨一试。