字
字节笔记本
2026年2月22日
RobotJS - Node.js 桌面自动化库
本文介绍 RobotJS,一个用于 Node.js 的桌面自动化库。它提供了控制鼠标、键盘和读取屏幕像素的功能,让开发者能够用 JavaScript 实现跨平台的桌面自动化任务。
项目简介
RobotJS 是一个开源的 Node.js 桌面自动化库,由 Jason Stallings(octalmage)开发维护。截至目前,该项目在 GitHub 上已获得 12.7k stars 和 993 forks,主要使用 C 语言(84.5%)编写,同时包含 C++、JavaScript、Objective-C 和 Python 代码。
该项目支持 Mac、Windows 和 Linux 三大操作系统,是 AutoHotkey 在 Node.js 生态中的优秀替代品。
核心特性
- 鼠标控制:移动鼠标位置、左/右点击、拖拽操作
- 键盘控制:按键、长按、输入文字
- 屏幕读取:获取屏幕像素颜色、捕获屏幕
- 跨平台支持:一套代码同时支持 Mac、Windows、Linux
- 原生性能:基于 C/C++ 实现,执行效率高
- 简单易用:简洁的 JavaScript API,易于上手
技术栈
- C (84.5%) - 核心原生模块实现
- C++ (7.7%) - 平台特定功能封装
- JavaScript (4.9%) - Node.js 接口层
- Objective-C (2.4%) - macOS 平台支持
- Python (0.5%) - 构建工具脚本
安装指南
使用 npm 安装
bash
npm install robotjsnpm 会自动下载适合你操作系统的预编译二进制文件。
从源码构建
如果你需要手动构建,请确保已安装以下依赖:
- macOS: Xcode Command Line Tools 或 Xcode
- Windows: Visual Studio 2013 或更高版本
- Linux: Python、make、GCC
安装 node-gyp:
bash
npm install -g node-gyp然后构建项目:
bash
node-gyp rebuild快速开始
鼠标控制示例
让鼠标在屏幕上按正弦波轨迹移动:
javascript
var robot = require("robotjs");
// 设置鼠标移动延迟
robot.setMouseDelay(2);
var twoPI = Math.PI * 2.0;
var screenSize = robot.getScreenSize();
var height = (screenSize.height / 2) - 10;
var width = screenSize.width;
for (var x = 0; x < width; x++) {
y = height * Math.sin((twoPI * x) / width) + height;
robot.moveMouse(x, y);
}键盘控制示例
输入文字并按下回车键:
javascript
var robot = require("robotjs");
// 输入 "Hello World"
robot.typeString("Hello World");
// 按下回车键
robot.keyTap("enter");屏幕读取示例
获取鼠标当前位置的像素颜色:
javascript
var robot = require("robotjs");
// 获取鼠标位置
var mouse = robot.getMousePos();
// 获取像素颜色(十六进制格式)
var hex = robot.getPixelColor(mouse.x, mouse.y);
console.log("#" + hex + " at x:" + mouse.x + " y:" + mouse.y);API 参考
完整的 API 文档请访问官方文档站:https://robotjs.io/docs/syntax
主要 API 分类
| 分类 | 功能 |
|---|---|
| Mouse | 鼠标移动、点击、滚动、拖拽 |
| Keyboard | 按键、组合键、输入文字 |
| Screen | 屏幕尺寸、像素颜色、截图 |
应用场景
RobotJS 适用于以下场景:
- 自动化测试 - 模拟用户操作进行 UI 测试
- 数据录入 - 自动化表单填写和数据输入
- 屏幕监控 - 监控屏幕变化、像素检测
- 游戏辅助 - 自动化游戏操作(需遵守游戏规则)
- 演示脚本 - 自动化软件演示和操作教程
注意事项
已知限制
- 全局热键:目前不支持全局热键,建议使用 Electron 或 NW.js 实现
- 截图功能:正在开发中,即将推出
- 多显示器:没有显式的多显示器支持
常见问题
Q: 为什么某些键盘按键缺失? A: 按键是按需实现的,如有需要可以提交 issue 或 PR。
Q: 支持 Electron 吗? A: 支持,RobotJS 可以与 Electron 配合使用。
项目背景
开发者 Jason Stallings 是 AutoHotkey 的长期用户,AutoHotkey 在 Windows 上的图像搜索和像素相关功能非常强大。但由于工作中转而使用 Mac,他发现 Mac 上没有类似的工具,于是决定用他最喜欢的 Node.js 来开发 RobotJS。
相关项目
- autopy - RobotJS 基于的项目
- AutoHotkey - Windows 自动化工具
项目链接
- GitHub 仓库:https://github.com/octalmage/robotjs
- 官方文档:https://robotjs.io/docs/syntax
- 维护者:Jason Stallings
- 许可证:MIT
分享: