当前位置: 首页 > article >正文

Midscene.js:重新定义UI自动化的新时代工具

image

前言

Midscene.js 是一个创新的、面向开发者的 UI 自动化解决方案,并通过人工智能技术简化自动化脚本的编写与维护。

它提供了三种核心方法——交互(.ai, .aiAction)、提取(.aiQuery)和断言(.aiAssert),使开发者能够以自然语言描述步骤并执行复杂的UI操作。

它不仅支持通用的大规模语言模型(LLM),还兼容开源模型 UI-TARS,为用户提供了更多的选择。

安装

方式一:从 Chrome 应用商店下载插件快速体验

https://chromewebstore.google.com/detail/midscenejs/gbldofcpkknbggpkmbdaefngejllnief?utm_source=ext_app_menu

方式二:在 **github **下载源码运行

https://github.com/web-infra-dev/midscene

配置模型和服务商

这里我们以 **Chrome **插件进行演示

常用的主要配置项如下,其中 OPENAI_API_KEY 是必选项:

名称描述
OPENAI_API_KEY必选项。你的 OpenAI API Key (如 “sk-abcdefghijklmnopqrstuvwxyz”)
OPENAI_BASE_URL可选。API 的接入 URL。常用于切换到其他模型服务,如 https://some_service_name.com/v1
MIDSCENE_MODEL_NAME可选。指定一个不同的模型名称 (默认是 gpt-4o)。常用于切换到其他模型服务

image

这里要注意,环境变量的KEY=VALUE等于符号左右两侧不能有空格,否则会报错

基本使用

Midscene** 核心操作分为行为**、查询断言,如下图所示:

image

行为

用于控制界面,包括对界面定位、点击、滚动、键盘输入、悬停、等待。

基本用法:

await mid.aiAction('在搜索输入框中输入你好,然后按回车执行搜索');
await mid.aiAction('将鼠标移动到新闻列表中的第二项,然后点击它');

// 使用 `.ai` 简写
await mid.ai('将鼠标移动到新闻列表中的第二项,然后点击它');

查询

用于从 UI 提取自定义数据,不仅可以返回页面上直接书写的数据,还能基于“理解”返回数据。

基本用法:

const dataA = await mid.aiQuery({
	time: '左上角展示的日期和时间,string', 
	userInfo: '用户信息,{name: string}',
	tableFields: '表格的字段名,string[]',
	tableDataRecord: '表格中的数据记录,{id: string, [fieldName]: string}[]'
});

最后AI会按照你的格式将数据整理返回

断言

为了确保提取的数据符合预期,通常会结合使用 .aiAssert 方法来进行断言。

基本用法:

await mid.aiAssert('"路由器" 的价格是 139');

这段代码将会检查页面上的“路由器”产品的价格是否确实是 139。如果不符合预期,则测试将失败。

注意事项

使用清晰、详细的步骤描述非常重要。过于简略的指令可能会导致不稳定的结果或者运行失败。

Midscene 目前无法规划包含条件和循环的步骤。

为了避免 AI 幻觉造成的错误断言,在需要高准确性的场景可以结合 .aiQuery 和普通 JavaScript 断言来替代 .aiAssert

调试配置

设置 MIDSCENE_DEBUG_AI_PROFILE 变量,就可以看到每次调用 AI 的时间和 token 数量。

MIDSCENE_DEBUG_AI_PROFILE=1

总结

Midscene.js 是一款创新的面向开发者的 UI 自动化解决方案,通过人工智能技术简化自动化脚本的编写与维护。

它提供了交互、提取和断言三种核心方法,支持通用的大规模语言模型(LLM)和开源模型 UI-TARS

– 欢迎点赞、关注、转发、收藏【我码玄黄】,各大平台同名。


http://www.kler.cn/a/518450.html

相关文章:

  • JVM学习指南(48)-JVM即时编译
  • Java 大视界 -- Java 大数据中的隐私增强技术全景解析(64)
  • OLMo:开启AI研究新纪元的开放利器
  • 基于SpringBoot+WebSocket的前后端连接,并接入文心一言大模型API
  • websocket实现
  • (2)STM32 USB设备开发-USB虚拟串口
  • 新版IDEA创建数据库表
  • PCIE模式配置
  • Elasticsearch 性能测试工具 Loadgen 之 002——命令行及参数详解
  • web端ActiveMq测试工具
  • AI Agent的规划系统:让Agent更智能地完成任务
  • Spring--SpringMVC使用(接收和响应数据、RESTFul风格设计、其他扩展)
  • 2、ceph的安装——方式二ceph-deploy
  • 亚博microros小车-原生ubuntu支持系列:8-脸部检测与人脸特效
  • python iter函数介绍
  • Frida使用指南(三)- Frida-Native-Hook
  • 原生HTML集合
  • Spring Security(maven项目) 3.0.2.7版本
  • ray.rllib 入门实践-3: 配置参数列表
  • 深圳云盟智慧科技公司智慧停车管理系统GetVideo存在SQL注入漏洞
  • Java 中如何使用 SSL 连接 IoTDB
  • 蓝桥动态规划(dp)题目讲解
  • 【漫话机器学习系列】059.特征选择策略(Feature Selection Strategies)
  • ESP32S3基于espidf lvgl驱动i2c ssd1306/sh1106/7屏幕使用
  • Elastic Cloud Serverless 获得主要合规认证
  • 设计模式概述 - 设计模式的重要性