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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【落羽的落羽 数据结构篇】算法复杂度

文章目录 一、数据结构和算法简介二、算法复杂度1. 时间复杂度2. 空间复杂度 一、数据结构和算法简介 数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。没有一种单一的数据结构对所有用途都有用,所以我们要学…

如何使用tushare pro获取股票数据——附爬虫代码以及tushare积分获取方式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据 总结 一、Tushare 介绍 Tushare 是一个提供中国股市数据的API接口服务,它允许用户…

Java 实现Excel转HTML、或HTML转Excel

Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,以便更好地利用和展示数据。本文将介绍如何通过 Java 实现 E…

迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-添加内核编译

编译内核时将该 HDF 驱动编译到镜像中,接下来编写驱动编译脚本 Makefile,代码如下所示: 加入编译体系,填加模块目录到 drivers/hdf_core/adapter/khdf/linux/Makefile 文件 更多内容可以关注:迅为RK3568开发板篇OpenHa…

【含开题报告+文档+PPT+源码】基于SpringBoot的校园跑腿管理系统

开题报告 本文旨在探讨校园跑腿系统的设计与实现,通过深入研究与分析,实现了一套包含用户管理、发布跑腿单、跑腿抢单、跑腿单评论、在线留言以及用户在线充值等功能的综合性系统。该系统以提高校园内物品跑腿与配送效率为核心目标,为广大学…

|Python新手小白中级教程|第三十一章:日期与时间(time库使用指令——深化)——time库的9种常见函数【实用干货,一定要收藏!】

文章目录 前言导入一、基础函数:time.time() time.localtime() time.mktime()1.time函数2.localtime函数3.mktime函数 二、更加复杂的函数:gmtime函数,asctime函数,ctime函数4.gmtime函数5.asctime函数6.ctime函数 三、应用型:sleep函数&…

【以音频软件FFmpeg为例】通过Python脚本将软件路径添加到Windows系统环境变量中的实现与原理分析

在Windows系统中,你可以通过修改环境变量 PATH 来使得 ffmpeg.exe 可在任意路径下直接使用。要通过Python修改环境变量并立即生效,如图: 你可以使用以下代码: import os import winreg as reg# ffmpeg.exe的路径 ffmpeg_path …

计算机网络三张表(ARP表、MAC表、路由表)总结

参考: 网络三张表:ARP表, MAC表, 路由表,实现你的网络自由!!_mac表、arp表、路由表-CSDN博客 网络中的三张表:ARP表、MAC表、路由表 首先要明确一件事,如果一个主机要发送数据,那么必…

C++11 可变参数模版

目录 1.可变参数模版 1.1概念 1.2递归方式展开参数包 1.3逗号表达式展开参数包 1.可变参数模版 1.1概念 C11的新特性可变参数模板,这是一种允许模板函数或模板类接受任意数量参数的特性。可变参数模板极大地增强了模板的灵活性和表达能力,使得编写…

React和Vue有什么区别,如何选择?

React和Vue有什么区别,如何选择? React 和 Vue 是当前最受欢迎的前端框架之一,两者在开发者中都有极高的声誉。它们都旨在帮助开发人员构建用户界面,但在实现方式和适用场景上有所不同。如果你正考虑在项目中选择 React 或 Vue&a…

Yocto项目 - 解读CROss PlatformS (CROPS)

一、概述 Yocto项目是一个用于创建自定义Linux发布版本的工具集成项目,在应对复杂应用场景时能提供高度可自定义性。但是在多端机应用中,如何在不同的平台上可靠地完成构建工作?CROss PlatformS (CROPS)即展示了其重要作用。 CROPS是Yocto项…

Electron学习笔记,安装环境(1)

1、支持win7的Electron 的版本是18,这里node.js用的是14版本(node-v14.21.3-x86.msi)云盘有安装包 Electron 18.x (截至2023年仍在维护中): Chromium: 96 Node.js: 14.17.0 2、安装node环境,node-v14.21.3-x86.msi双击运行选择安…

如何快速开发LabVIEW项目,成为LabVIEW开发的高手

发现了一篇多年前写的文章,转发到这里 如何快速开发LabVIEW项目,成为LabVIEW开发的高手。 如果您手里有LabVIEW项目,领导催的又很紧,该怎么办? 如果您公司规模小,就想把LabVIEW项目快速搞定,有什…

RTMP|RTSP播放器只解码视频关键帧功能探讨

技术背景 我们在做RTMP|RTSP直播播放器的时候,遇到过这样的技术诉求,在一些特定的应用场景中,可能只需要关键帧的信息,例如视频内容分析系统,可能只对关键帧进行分析,以提取特征、检测对象或场景变化。鉴于…

Lua 环境的安装

1.安装Lua运行环境 本人采用的是在windows系统中使用cmd指令方式进行安装,安装指令如下: winget install "lua for windows" 也曾使用可执行程序安装过,但由于电脑是加密电脑,最后都已失败告终。使用此方式安装可以安…

Prometheus+grafana实践:Doris数据库的监控

文章来源:乐维社区 Doris数据库背景 Doris(Apache Doris)是一个现代化的MPP(Massive Parallel Processing,大规模并行处理)数据库,主要用于在线分析处理(OLAP)场景。 D…

Spring Boot整合JavaMail实现邮件发送

一. 发送邮件原理 发件人【设置授权码】 - SMTP协议【Simple Mail TransferProtocol - 是一种提供可靠且有效的电子邮件传输的协议】 - 收件人 二. 获取授权码 开通POP3/SMTP,获取授权码 授权码是QQ邮箱推出的,用于登录第三方客户端的专用密码。适用…

FPGA实现光纤通信(3)——光纤8b/10b编码数据回环

前言 光纤通信属于高速串行通信,具有较高的数据传输速率,通常用于服务器以及通信设备之间用于高速数据交换,对于xilinx 7系列的FPGA,内部具有集成的高速接口用于实现光纤通信。本次就来实现8b/10b编码数据回环。 测试环境:vivado版本:2020.02 FPGA芯片:XC7K70T 测试说…

Linux网络之TCP

Socket编程--TCP TCP与UDP协议使用的套接字接口比较相似, 但TCP需要使用的接口更多, 细节也会更多. 接口 socket和bind不仅udp需要用到, tcp也需要. 此外还要用到三个函数: 服务端 1. int listen(int sockfd, int backlog); 头文件#include <sys/socket.h> 功能: …

如何设计浪漫风格的壁纸

一、选择浪漫的色彩 柔和色调&#xff1a; 粉色系&#xff1a;粉色是浪漫的经典色彩&#xff0c;包括淡粉色、玫瑰粉、樱花粉等&#xff0c;能够营造出温馨和甜蜜的氛围。 紫色系&#xff1a;紫色带有神秘和高贵的感觉&#xff0c;如薰衣草紫、淡紫色等&#xff0c;适合营造浪…