2025最新RobotJS实战指南:10分钟上手桌面自动化开发
【免费下载链接】robotjs Node.js Desktop Automation. 项目地址: https://gitcode.com/gh_mirrors/ro/robotjs
你还在为重复的桌面操作浪费时间吗?想让电脑自动完成点击、输入、截图等任务?本文将带你10分钟快速掌握RobotJS,轻松实现桌面自动化开发。读完你将学会:安装配置RobotJS环境、控制鼠标与键盘、屏幕截图与颜色识别,以及3个实用自动化场景的完整实现。
什么是RobotJS
RobotJS是一个Node.js桌面自动化库,支持Windows、Mac和Linux系统,能够模拟鼠标操作、键盘输入、屏幕捕获等功能。通过简单的JavaScript代码,你可以轻松实现各种桌面自动化任务,如自动填写表单、游戏辅助、定时截图等。
官方文档:README.md
环境准备
安装Node.js
首先确保你的系统已安装Node.js环境,推荐使用Node.js 14.x及以上版本。
安装RobotJS
使用npm命令安装RobotJS:
npm install robotjs
如果需要从源码构建,可以执行:
npm install -g node-gyp
node-gyp rebuild
项目配置文件:package.json
核心功能实战
鼠标控制
RobotJS提供了丰富的鼠标控制功能,包括移动、点击、拖拽和滚动等操作。
基础鼠标操作
const robot = require('robotjs');
// 设置鼠标移动延迟(毫秒)
robot.setMouseDelay(100);
// 获取屏幕尺寸
const screenSize = robot.getScreenSize();
console.log(`屏幕尺寸: ${screenSize.width}x${screenSize.height}`);
// 移动鼠标到指定位置
robot.moveMouse(screenSize.width / 2, screenSize.height / 2);
// 鼠标点击
robot.mouseClick(); // 左键单击
robot.mouseClick('right'); // 右键单击
// 鼠标拖拽
robot.dragMouse(100, 100); // 从当前位置拖拽到(100,100)
// 鼠标滚动
robot.scrollMouse(0, 1); // 向下滚动
robot.scrollMouse(0, -1); // 向上滚动
鼠标操作测试代码:test/mouse.js
平滑移动鼠标
// 平滑移动鼠标到指定位置
robot.moveMouseSmooth(500, 500);
键盘控制
RobotJS可以模拟键盘输入,支持单个按键、组合键和字符串输入。
const robot = require('robotjs');
// 设置键盘延迟(毫秒)
robot.setKeyboardDelay(100);
// 输入字符串
robot.typeString("Hello RobotJS!");
// 按键操作
robot.keyTap("enter"); // 按Enter键
robot.keyTap("a", "control"); // Ctrl+A
// 组合键
robot.keyToggle('control', 'down'); // 按下Ctrl键
robot.keyTap('c'); // 按C键
robot.keyToggle('control', 'up'); // 释放Ctrl键
屏幕捕获与颜色识别
RobotJS可以获取屏幕指定位置的颜色,也可以捕获整个屏幕或指定区域。
const robot = require('robotjs');
// 获取鼠标位置
const mousePos = robot.getMousePos();
console.log(`鼠标位置: x=${mousePos.x}, y=${mousePos.y}`);
// 获取指定位置像素颜色
const pixelColor = robot.getPixelColor(mousePos.x, mousePos.y);
console.log(`像素颜色: #${pixelColor}`);
// 捕获屏幕
const screenshot = robot.screen.capture(0, 0, 800, 600);
console.log(`截图尺寸: ${screenshot.width}x${screenshot.height}`);
// 获取截图中指定位置颜色
const color = screenshot.colorAt(100, 100);
console.log(`截图中(100,100)颜色: #${color}`);
屏幕操作相关源码:src/screen.c
实用场景案例
案例1:自动填写表单
const robot = require('robotjs');
// 等待程序启动
setTimeout(() => {
// 移动到表单字段并点击
robot.moveMouseSmooth(300, 400);
robot.mouseClick();
// 输入姓名
robot.typeString("张三");
// 移动到下一个字段
robot.keyTap("tab");
// 输入邮箱
robot.typeString("zhangsan@example.com");
// 提交表单
robot.keyTap("enter");
}, 3000);
案例2:定时截图工具
const robot = require('robotjs');
const fs = require('fs');
const path = require('path');
// 创建截图目录
const screenshotDir = path.join(__dirname, 'screenshots');
if (!fs.existsSync(screenshotDir)) {
fs.mkdirSync(screenshotDir);
}
// 定时截图函数
function takeScreenshot() {
const screenshot = robot.screen.capture();
const timestamp = new Date().toISOString().replace(/:/g, '-');
const filename = path.join(screenshotDir, `screenshot-${timestamp}.png`);
// 保存截图(需要额外的图像处理库支持)
console.log(`截图已保存: ${filename}`);
}
// 每10秒截图一次
setInterval(takeScreenshot, 10000);
console.log("定时截图工具已启动,每10秒截图一次");
案例3:颜色检测与响应
const robot = require('robotjs');
// 检测指定位置颜色是否变化
function watchColor(x, y, targetColor) {
const currentColor = robot.getPixelColor(x, y);
if (currentColor === targetColor) {
console.log(`颜色匹配: #${currentColor}`);
// 执行相应操作
robot.mouseClick();
return true;
}
return false;
}
// 每秒检测一次
setInterval(() => {
watchColor(100, 100, "ff0000"); // 检测(100,100)位置是否为红色
}, 1000);
项目结构与核心模块
RobotJS的核心功能由C语言实现,通过Node.js的C++扩展提供JavaScript接口。主要源码文件结构如下:
- 鼠标操作:src/mouse.c、src/mouse.h
- 键盘操作:src/keypress.c、src/keypress.h
- 屏幕操作:src/screen.c、src/screen.h
- 截图功能:src/screengrab.c、src/screengrab.h
- 颜色处理:src/color_find.c、src/color_find.h
注意事项
- 权限问题:在某些系统上,RobotJS需要特殊权限才能控制鼠标和键盘。
- 性能考虑:频繁的屏幕捕获可能会影响性能,适当调整捕获频率。
- 跨平台差异:虽然RobotJS支持多平台,但部分功能在不同系统上可能有差异。
- 错误处理:自动化操作可能会因为窗口位置变化等原因失败,建议添加适当的错误处理。
总结与展望
通过本文的介绍,你已经掌握了RobotJS的基本用法和常见应用场景。RobotJS作为一款强大的桌面自动化工具,可以帮助你节省大量重复劳动的时间。
未来,你可以探索更复杂的自动化场景,如结合图像识别实现更智能的桌面自动化,或开发基于RobotJS的GUI自动化测试工具。
如果你觉得本文对你有帮助,请点赞、收藏并关注,后续将带来更多RobotJS高级应用技巧!
项目源码:src/
【免费下载链接】robotjs Node.js Desktop Automation. 项目地址: https://gitcode.com/gh_mirrors/ro/robotjs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



