推荐一款最新开源,基于AI人工智能UI自动化测试工具!支持自然语言编写脚本!

随着互联网技术的飞速发展,Web应用越来越普及,前端页面也越来越复杂。为了确保产品质量,UI自动化测试成为了开发过程中不可或缺的一环。然而,传统的UI自动化测试工具往往存在学习成本高、维护困难等问题。特别是UI 自动化脚本里往往到处都是选择器,比如 #ids、data-test、.selectors。在需要重构的时候,这可能会让人感到非常头疼。

今天,我们将为您推荐一款基于AI人工智能的开源UI自动化测试工具——Midscene,让您轻松应对UI自动化测试挑战。

1、Midscene介绍

Midscene.js 是一款由 web-infra-dev开发的开源 AI 驱动的自动化 SDK。其核心功能是能够让测试人员使用自然语言来控制页面、执行断言以及提取 JSON 格式的数据。这种以自然语言为交互方式的设计,极大地降低了自动化测试的门槛,即使是非专业编程人员也能够较为轻松地开展 UI 自动化测试工作。

Midscene.js 采用了多模态大语言模型(LLM),能够直观地“理解”你的用户界面并执行必要的操作。你只需描述交互步骤或期望的数据格式,AI 就能为你完成任务。

默认选择的是 OpenAI GPT-4o 作为模型,你也可以自定义为其他多模态模型。

2、核心特性

1、自然语言交互:

  • Midscene.js允许用户通过自然语言描述测试步骤,工具将自动规划并控制用户界面。这种交互方式大大降低了编写测试脚本的难度,提高了测试脚本的可读性和可维护性。

2、理解UI,JSON格式回答:

  • 用户只需提供所需数据的格式提示,Midscene.js即可返回以JSON格式组织的预期响应。这使得数据提取和验证过程更加直观和高效。

3、直观断言:

  • 用户可以用自然语言进行断言,Midscene.js将基于AI理解执行这些断言。这减少了编写复杂断言逻辑的需求,提高了测试的准确性和可靠性。

4、无需定制训练的LLM:

  • Midscene.js支持使用公共的多模态LLM(如GPT-4等),无需进行任何定制训练。这降低了使用门槛,使得更多开发者能够轻松上手这款工具。

5、可视化报告:

  • Midscene.js提供了可视化报告文件,用户可以轻松理解和调试整个测试过程。这有助于快速定位问题,提高测试效率。

3、技术实现与架构

1、语言构成

Midscene 的代码主要由 HTML、TypeScript、MDX、Less和 JavaScript等语言编写。这种多语言的组合构建了一个功能丰富且灵活的测试工具框架。其中,TypeScript 的使用为代码提供了强类型检查,有助于提高代码的质量和可维护性;HTML 用于构建相关的页面结构(可能用于测试页面的模拟或展示测试结果等方面);MDX 和 Less 则在文档编写、样式处理等方面发挥作用;JavaScript 作为前端开发的重要语言,也在一些交互逻辑处理等环节起到补充作用。

2、AI 驱动机制

Midscene.js基于多模态AI技术构建,通过AI agent实现自然语言控制页面、页面信息提取和断言页面状态等功能。它采用了多种工程手段,如AI结果缓存、AI任务报告等,以提升执行速度和中间透明化。

此外,Midscene.js还支持丰富的API接口,方便开发者进行自定义扩展和集成。

其内部采用了先进的 AI 技术来理解自然语言指令并转化为实际的自动化测试操作。它可能基于自然语言处理(NLP)模型来解析测试人员输入的自然语言文本,识别其中的操作意图和目标元素等关键信息。然后,通过与底层的自动化测试框架进行交互,将这些解析后的指令映射为具体的页面操作代码,如使用 PlaywrightPuppeteer 等常见的自动化测试库来实现对浏览器页面的控制和交互。

4、安装与使用

如果你想要使用Midscene中的核心能力,有多种方式,可以安装浏览器插件 开始快速体验。插件里可以用自然语言与任意网页联动,调用交互、提取、断言三种接口,无需搭建代码项目。

此外,还有几种形式支持将 Midscene 集成到代码:

  • 使用 YAML 格式的自动化脚本
  • 集成到 Puppeteer
  • 集成到 Playwright

Midscene一共有三种关键方法:交互(.ai, .aiAction), 提取 (.aiQuery), 断言 (.aiAssert)。

  • 用 .ai方法描述步骤并执行交互
  • 用 .aiQuery 从 UI 中“理解”并提取数据,返回值是 JSON 格式,你可以尽情描述想要的数据结构
  • 用 .aiAssert 来执行断言

举例:

// 👀 输入关键字,执行搜索
// 注:尽管这是一个英文页面,你也可以用中文指令控制它
await ai('在搜索框输入 "Headphones" ,敲回车');// 👀 找到列表里耳机相关的信息
const items = await aiQuery('{itemTitle: string, price: Number}[], 找到列表里的商品标题和价格'
);console.log("headphones in stock", items);

4.1 通过 Chrome 插件快速体验

前往 Chrome 扩展商店安装 Midscene 扩展:Midscene
启动扩展(可能默认是折叠的),通过粘贴 Key=Value 格式配置插件环境:

OPENAI_API_KEY="sk-replace-by-your-own"

通过使用 Midscene.js Chrome 插件,你可以快速在任意网页上体验 Midscene 的主要功能,而无需编写任何代码。

4.2 使用 YAML 格式的自动化脚本

在大多数情况下,开发者编写自动化脚本只是为了执行一些冒烟测试,比如检查某些内容是否出现,或者验证某个关键用户路径是否可用。在这种情况下,维护一个大型测试项目会显得毫无必要。

⁠Midscene 提供了一种基于 .yaml 文件的自动化测试方法,这有助于你专注于脚本本身,而不是测试框架。以此,任何团队内的成员都可以编写自动化脚本,而无需学习任何 API。

1、编写一个名为 bing-search.yaml 的文件。

target:url: https://www.bing.comtasks:- name: 搜索天气flow:- ai: 搜索 "今日天气"- sleep: 3000- name: 检查结果flow:- aiAssert: 结果中展示了天气信息

2、配置 OpenAI API Key

# 更新为你自己的 Keyexport OPENAI_API_KEY="sk-abcdefghijklmnopqrstuvwxyz"

或使用 .env 文件存储配置

.env
OPENAI_API_KEY="sk-abcdefghijklmnopqrstuvwxyz"

3、全局安装 @midscene/cli

npm i -g @midscene/cli
# 或在项目中安装
npm i @midscene/cli --save-dev

4、运行脚本

midscene ./bing-search.yaml
# 或者如果你在项目中安装了 midscene
npx midscene ./bing-search.yaml

你应该会看到脚本的执行进度和可视化运行报告文件。

4.3 集成到 Playwright

Playwright 是由微软开发的一个开源自动化库,主要用于对网络应用程序进行端到端测试(end-to-end test)和网页抓取。

这里我们假设你已经拥有一个集成了 Playwright 的仓库。

1、配置 OpenAI API Key

# 更新为你自己的 Key
export OPENAI_API_KEY="sk-abcdefghijklmnopqrstuvwxyz"

2、新增依赖

npm install @midscene/web --save-dev

3、更新配置文件,把下方代码保存为 ./e2e/fixture.ts;

import { test as base } from '@playwright/test';
import type { PlayWrightAiFixtureType } from '@midscene/web/playwright';
import { PlaywrightAiFixture } from '@midscene/web/playwright';export const test = base.extend<PlayWrightAiFixtureType>(PlaywrightAiFixture());

4、编写测试用例,例如下方代码,保存为 ./e2e/ebay-search.spec.ts

import { expect } from "@playwright/test";
import { test } from "./fixture";test.beforeEach(async ({ page }) => {page.setViewportSize({ width: 400, height: 905 });await page.goto("https://www.ebay.com");await page.waitForLoadState("networkidle");
});test("search headphone on ebay", async ({ ai, aiQuery, aiAssert }) => {// 👀 输入关键字,执行搜索// 注:尽管这是一个英文页面,你也可以用中文指令控制它await ai('在搜索框输入 "Headphones" ,敲回车');// 👀 找到列表里耳机相关的信息const items = await aiQuery('{itemTitle: string, price: Number}[], 找到列表里的商品标题和价格');console.log("headphones in stock", items);expect(items?.length).toBeGreaterThan(0);// 👀 用 AI 断言await aiAssert("界面左侧有类目筛选功能");
});

5、运行测试用例

npx playwright test ./e2e/ebay-search.spec.ts

6、查看测试报告
当上面的命令执行成功后,会在控制台输出:Midscene - report file updated: ./current_cwd/midscene_run/report/some_id.html,通过浏览器打开该文件即可看到报告。

5、小结

Midscene作为一款开源的基于 AI 人工智能的 UI 自动化测试工具,在简化测试流程、提高测试效率和降低测试门槛等方面有着显著的优势。它为软件测试人员提供了一种全新的测试手段,尤其适用于快速迭代开发的项目和团队中测试资源相对有限的情况。然而,如同任何工具一样,它也有其自身的局限性,在实际使用过程中需要测试人员根据具体的项目需求和场景进行合理的评估和应用。

但总体而言,Midscene 无疑是 UI 自动化测试领域中一颗极具潜力的新星,值得广大测试人员和开发团队关注与尝试。

项目地址:https://github.com/web-infra-dev/midscene

使用文档:https://midscenejs.com/zh/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/889950.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无需破解,国际版也很香!

随着短视频平台的迅速崛起,各类短视频内容如搞笑片段、生活窍门、旅行日志和教学视频层出不穷,几乎覆盖了所有主题和风格。大众对视频质量的要求日益提高,因此选择一款专业的视频编辑软件显得尤为重要。用户可以利用多层时间线进行剪辑,添加特效与转场,调整色彩和音频,甚…

读DAMA数据管理知识体系指南05数据治理(中)

数据治理需支持业务战略,明确治理责任,评估能力,制定战略框架,参与变革与问题管理,确保法规遵从,通过监控和评估提升数据质量和治理效果。1. 规划组织的数据治理 1.1. 数据治理工作必须支持业务战略和目标1.1.1. 一个组织的业务战略和目标影响着组织的数据战略,以及数据…

记录绘制立体平面网格分块图像

绘制如下图所示的图片方法: ​​ 首先在drawio中为图片画好网格,如下图所示 ​​ 然后将该图片导出,(推荐导出为svg格式,无损清晰),将导出的图片导入PPT中 在PPT中通过开始=》形状效果=》三维旋转=》离轴 2:上​来将图片转换成立体效果。 ​​ ​​ 最后右键单击PPT中已…

开源一款数据转换扩展板-FreakStudio多米诺系列

数据转换板通过I2C接口进行信号采集和输出,支持最多16通道输入和2通道输出。具备860Hz采样率和50KHz输出频率,采用16位ADC和12位DAC芯片,适用于精确信号采集。小尺寸设计,支持堆叠级联。原文链接: FreakStudio的博客 摘要 数据转换板通过I2C接口进行信号采集和输出,支持最…

【CodeForces训练记录】Codeforces Round 1006 (Div. 3)

训练情况赛后反思 结束前打表看出来了 F 有一点进制的规律,太极限了来不及写了 A题 显然不合法的情况就是所有元素绝对值的和都比和的绝对值小,这种情况无论怎么凑都到不了 \(k\),剩下的就是把和均摊到值域上,除以值域向上取整就是答案点击查看代码 #include <bits/stdc…

西湖论剑2025Misc—cscs

西湖论剑2025cscs详解 Cobalt Strike流量主要是找beacon,主要以两种形式呈现 一小段shellcode(几百个字节),通常叫做stager shellcode,这段代码下载整个的beacon。 一个完全的beacon:一个可以反射性加载的PE文件 先来了解下cs流量的特征 cs流量特征: 1,基础特征:心跳包…

轻松驾驭Docker!Windows Docker Desktop部署Portainer全攻略

轻松驾驭Docker!Windows Docker Desktop部署Portainer全攻略 一、引言 在当今的软件开发领域,Docker 已经成为构建、部署和运行应用的标准之一。它通过容器化技术使得开发者可以轻松地打包应用程序及其依赖,并确保它们可以在任何环境中一致地运行。 为了更好地管理和监控这些…

部署 VS2022 驱动开发环境-解决无法编译驱动的问题

使用 VS2022 安装驱动开发环境,创建默认的驱动项目是无法直接编译出驱动的文件的,需要使用 NuGet 给项目安装【Microsoft.Windows.WDK.x64】1、下载安装 VS2022(最低支持的 WDK 版本:10.0.26100) 下载地址:https://visualstudio.microsoft.com/zh-hans/downloads 1.1 组件选…

web开发 辅助学习管理系统开发日记 day2

Q1:遇到的api返回结果数据封装的问题,在老版本的springboot中当实现类的类名和数据库中的类名不一致的是不会自动封装返回,因此返回结果值会显示null,但是在新版貌似已经会自动识别,所以我没有遇到该问题,如果遇到用手动结果映射的方法解决。Q2:在进行前后端联桥时,前端服…

右值引用和移动语义

右值引用(Rvalue reference)和移动语义(Move semantics) 左值(lvalue)和右值(rvalue)左值(也称为 locator value)是一个可以被修改的存储位置,指向内存中的某个位置 例子:变量、数组元素、解引用指针等判断左值的方法是:能够获得这个表达式的引用 或者取地址右值 …

【vulhub】redis 4-unacc (redis未授权访问)

渗透环境 攻击机: IP: 192.168.66.130(Kali) 漏洞收录于:vulhub/redis/4-unacc 涉及知识点:redis未授权访问 影响版本:redis 版本 < 6.x 漏洞的产生条件有以下两点:Redis绑定在0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接…

再论支付账务

支付账务是金融领域中复杂且关键的一环,涉及资金流动、风险控制和业务效率等多个方面。本文从支付结算的专业视角出发,深入剖析了支付账务的核心逻辑,包括会计科目设置、对账结算流程以及账务核算的关键要点。学习账务的时候你是否经常有这些疑问“待结算和待清算是什么?为…