其实midscene也可以做PC端自动化测试

@midscene/computer 是一个强大的、基于视觉的PC桌面自动化工具。它允许你使用自然语言,通过AI来控制整个桌面——包括鼠标、键盘和屏幕——从而实现Windows、macOS和Linux上任何应用的自动化。
它的核心理念是让AI看懂屏幕并理解你的意图,而不是像传统工具那样依赖复杂的代码或元素定位器。你可以告诉它你的目标,比如"帮我发一条推文",它就会自动规划和执行一系列操作(如打开浏览器、输入文字、点击按钮)。
核心功能:AI如何驱动你的桌面
@midscene/computer 的核心能力可以分为两大块:底层控制和上层AI驱动。
跨平台桌面控制
它封装了所有基础的桌面交互能力,让你可以直接通过代码或AI来控制-1-2:
-
鼠标操作:单击、双击、右键、移动、拖放。
-
键盘输入:输入文本,模拟
Cmd/Ctrl+C、Enter、Escape等组合键。 -
屏幕:捕获任意显示器的截图。
-
多显示器支持:可以指定在哪个显示器上执行操作-2。
AI驱动的自动化
这是它最亮眼的部分。你不需要写详细的步骤,只需描述任务,AI就会理解并执行。// 告诉AI你的目标,它会自己规划步骤
await agent.aiAct('打开系统设置,找到并点击"显示器"');
await agent.aiAct('在文件管理器中,帮我创建一个名叫"周报"的文件夹');
-
提取信息 (
aiQuery):让AI看懂屏幕,并返回结构化的数据。// 提取屏幕信息 const screenInfo = await agent.aiQuery('{width: number, height: number}, 当前屏幕的分辨率是多少?'); console.log('屏幕分辨率:', screenInfo); // 或者定位特定元素的位置 const fileMenuPos = await agent.aiLocate('屏幕顶部的"文件"菜单'); -
智能断言 (
aiAssert):验证屏幕上是否出现了预期的内容。await agent.aiAssert('桌面上是否有一个名为 "新建文件夹" 的图标?');
快速上手
使用 @midscene/computer 在你的项目中进行自动化,通常只需要简单的三步。
环境准备
-
Node.js:需要 18.19.0 或更高版本。
-
平台权限:
-
macOS:需要为运行脚本的终端或IDE(如 VS Code、iTerm2)开启"辅助功能"权限。
-
Linux:需要安装
ImageMagick用于截图。 -
无头Linux环境:如果需要在CI服务器上运行,还需要配置
Xvfb来创建虚拟显示器。
-
安装与配置
-
在项目中安装核心包:
npm install @midscene/computer
-
配置AI模型的API密钥。你需要通过环境变量告诉它使用哪个视觉模型:
export MIDSCENE_MODEL_API_KEY="你的API密钥" export MIDSCENE_MODEL_NAME="你的模型名称" # 例如 qwen-vl-max export MIDSCENE_MODEL_BASE_URL="你的服务地址/v1"
编写第一个脚本
创建一个 example.ts 文件,写下这段代码,你就能感受到AI自动化的魅力:
import { agentFromComputer } from '@midscene/computer';
(async () => {
// 1. 创建一个"代理"来控制你的电脑
const agent = await agentFromComputer({
aiActionContext: '你现在控制着一台电脑。',
});
// 2. 获取屏幕信息
const screenInfo = await agent.aiQuery('{width: number, height: number} 获取屏幕分辨率');
console.log('屏幕分辨率:', screenInfo);
// 3. 让AI移动鼠标到屏幕中心
await agent.aiAct('把鼠标移动到屏幕正中间');
// 4. 断言屏幕上是否能看到内容
await agent.aiAssert('屏幕上应该能看到内容');
console.log('桌面自动化任务完成!');
})();
运行脚本 npx tsx example.ts,你会看到AI开始一步步执行你的指令。
API概览
@midscene/computer 提供了非常直观的API,主要分为两类:AI驱动的智能接口和底层控制接口。
-
AI驱动接口(核心)
agent.aiAct(prompt):执行一个由自然语言描述的任务或步骤。
agent.aiQuery(prompt):从屏幕中提取结构化的JSON数据。
agent.aiAssert(assertion):断言屏幕状态,失败则抛出错误。
agent.aiLocate(prompt):定位屏幕上特定元素的位置坐标。
agent.aiWaitFor(assertion):等待直到某个断言条件成立。
-
底层控制接口(精确操作)
agent.mouse.move(x, y):将鼠标移动到绝对坐标。
agent.keyboard.type(text):直接输入一段文本。
agent.screenshot():捕获当前屏幕截图。
高级玩法:MCP集成
除了作为JavaScript库使用,@midscene/computer 还是一个 MCP (Model Context Protocol) 服务器。
这意味着它可以作为一套标准的"工具",被任何支持MCP的AI助手(如 Claude Desktop、Cursor IDE)所调用。
-
工作原理:
@midscene/computer/mcp-server会将aiTap,aiInput,aiQuery等能力封装成一个个MCP工具。 -
应用场景:你可以在Cursor中直接对AI说:"帮我把这个文件夹里的所有图片重命名",AI助手就会通过MCP调用
@midscene/computer来操作你的电脑文件管理器,真正实现"用嘴编程。
总的来说,@midscene/computer 通过AI视觉技术,将复杂的UI自动化从"告诉计算机怎么做"变成了"告诉计算机做什么",极大地降低了门槛并提高了效率。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)