📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
我们之前介绍过 AppAgent,基本上完全靠
prompt
来描述自动化要做的事情,个人觉得没有可控性,就是说,我们无法确定AI如何理解我的描述,并产生行为。就比如,公司新招来一个实习生,我给他讲完开发需求,我无法确定他是否理解,理解到什么程度,以及是否会做,做到什么程度。更好的方式是什么?当然是将任务进行拆解, 一步一步的让这个实习生完成开发任务,哪一步不会随时交流,整个流程是可控的。
是否有这样的AI项目?现阶段,注意,我说的是现阶段, Midscene.js 的路子是对的。并且,我体验下来挺好的,我们完全可以在已有的playwright项目尝试使用。
midscene
官方文档:https://midscenejs.com/zh/index.html
Midscene.js是一个人工智能驱动的自动化SDK,可以控制页面,执行断言,并使用自然语言提取JSON格式的数据。
Midscene.js 采用了多模态大语言模型(LLM),能够直观地“理解”你的用户界面并执行必要的操作。你只需描述交互步骤或期望的数据格式,AI 就能为你完成任务。
多种集成形式
-
chrome 浏览器插件
-
YAML编写用例
-
target:
-
url: https://www.bing.com
-
tasks:
-
- name: 搜索天气
-
flow:
-
- ai: 搜索 "今日天气"
-
- sleep: 3000
-
- name: 检查结果
-
flow:
-
- aiAssert: 结果中展示了天气信息
这种方式比代码的能力弱很多,个人不推荐。
-
集成现有自动化工具
-
Playwright
-
Puppeteer
-
个人比较推荐这种方式。
playwright + midscene
为了进一步降低 playwright 和 midscene 的使用,我创建了 playwright-mind 项目。
github: https://github.com/autotestclass/playwright-mind
基于 playwright
和 midscene.js
自动化测试项目,给 Playwright
插上AI的翅膀,目前可以落地的AI自动化测试项目。
安装与配置
-
克隆项目到本地:
-
git clone https://github.com/autotestclass/playwright-mind
-
安装依赖
-
cd playwright-mind
-
npm install
-
安装运行浏览器
-
npx playwright install
-
配置大模型
本项目默认使用
qwen-vl-max-latest
模型, 经过验证可用,关键是免费。如果想其他模型请参考midscenejs官方配置。
阿里云百练:https://bailian.console.aliyun.com/
使用其他模型:https://midscenejs.com/zh/model-provider.html
在 .env
文件中配置环境变量:
export OPENAI_API_KEY="sk-your-key"
export OPENAI_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
export MIDSCENE_MODEL_NAME="qwen-vl-max-latest"
使用示例
在项目的 test
目录,附带了 bing-search-ai-example.spec.ts
例子。
示例代码
import { expect } from "@playwright/test";
import { test } from "./fixture/fixture";
test.beforeEach(async ({ page }) => {
await page.goto("https://cn.bing.com");
});
test('search keyword on bing', async ({ page, ai, aiQuery, aiAssert }) => {
// 👀 输入关键字,执行搜索
await ai('搜索输入框输入"playwright"关键字,并回车');
await page.waitForTimeout(3000);
// 👀 找到列表里耳机相关的信息
const items = await aiQuery(
'string[], 搜索结果列表中包含"playwright"相关的标题'
);
console.log("search result", items);
console.log("search result number", items?.length);
// 断言大于 1 条搜索结果
expect(items?.length).toBeGreaterThan(1);
// 👀 用 AI 断言
await aiAssert('检查搜索结果列表第一条标题是否包含"playwright"字符串');
});
三种关键方法:交互(.ai, .aiAction), 提取 (.aiQuery), 断言 (.aiAssert)。
-
.ai
方法描述步骤并执行交互 -
.aiQuery
从 UI 中“理解”并提取数据,返回值是 JSON 格式,你可以尽情描述想要的数据结构 -
.aiAssert
来执行断言
运行测试
> npx playwright test --headed tests/bing-search-ai-example.spec.ts
Running 1 test using 1 worker
✓ 1 [chromium] › baidu-search-ai-example.spec.ts:9:5 › search headphone on bing (52.1s)
search result [ 'Playwright 中文网', '快速入门Playwright框架:从零到自动化测试的第一 ...' ]
search result number 2
Midscene - report file updated: /Users/fnngj/zhpro/github/playwright-mind/midscene_run/report/playwright-merged-2025-01-10_00-44-50-464.html
Slow test file: [chromium] › baidu-search-ai-example.spec.ts (52.1s)
Consider splitting slow test files to speed up parallel execution
1 passed (55.3s)
Midscene - report file updated: /Users/fnngj/zhpro/github/playwright-mind/midscene_run/report/playwright-merged-2025-01-10_00-44-50-464.html
测试报告
关于 playwright (node.js)
评论区可能会问有没有python版本,node.js版本的playwright非常完美,我觉得不需要再造python版本,从我去年录制了node.js版本的playwright 之后已经彻底爱上了node.js版,用其他语言的版本纯属是浪费时间。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】