nodejs桌面自动化操作

nodejs桌面自动化操作

月光魔力鸭

2023-03-12 12:20 阅读 1346 喜欢 0

最近又回归了下DNF ,玩了一段时间,感觉也挺没意思的,关键是平时更没意思,想着不行搞个自动刷图吧(先说结论,没成)。 结果发现了nodejs里面的桌面自动化robotjs nut-js ,这两个都是做这个的,不过nut-js功能更多一些,可以以图找图,虽然没办法做DNF的自动刷图,但是我觉的做一些其他简单的操作还是可以的,比如抖音自动抽奖啥的应该问题不大,还没尝试。

robotjs

Node.js Desktop Automation. Control the mouse, keyboard, and read the screen.RobotJS supports Mac, Windows, and Linux.

Installation
npm install robotjs
Examples
// Move the mouse across the screen as a sine wave.
var robot = require("robotjs");
 
// Speed up the mouse.
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);
}
API

包含基本的操作:移动鼠标、鼠标点击、按键、屏幕截图,不过没有以图找图,常见的操作还是可以的。

@nut-tree/nut-js

nut.js (Native UI Toolkit)

nut.js is a cross-platform native UI automation / testing tool. It allows for native UI interactions via keyboard and / or mouse, but additionally gives you the possibility to navigate the screen based on image matching.

这个功能包含的就多了些 ,除了基本的键盘、鼠标、屏幕截图外,还可以高亮区域、以图找图、找文本,功能还是不错的。


相对来说nut.js功能更加强大,但是实际实践来看,nut-js 有时候并没有起作用(主要说的是在控制游戏角色上来说),其他的都还是可以的,但是我在通过代码操作DNF角色的时候,反而用robot起作用(有可能是我的代码有问题,不过代码这里就不放了),最后是两个结合一起来控制的。

转载请注明出处: https://chrunlee.cn/article/nodejs-desktop-automation.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
当我们想实现一个自己的库或模块后,发布的话,需要发布到npm上才能下载。以下是具体步骤
分享一个自动抓取静态站资源的小工具,可以在抓取某个静态站点的时候方便很多,尤其是如果页面比较多的话,会很难受,而且会自动将资源进行归类,如果一个页面一个页面的保存的话,那就比较费劲了。
今天想在服务器上跑下自己自动签到的程序,需要安装puppeteer ,结果出错。 permission denied, mkdir '/root/.nvm/versions/node/v9.11.1/lib/node_modules/
在平时nodejs练习过程中,可能会安装多个不同版本的nodejs,那么我们如何来轻松的管理和切换呢?推荐你一个nvm来试试水
前几天给朋友帮忙,想要一个一模一样的网站...自告奋勇去帮忙.. 结果发现之前一直没处理过类似的情况,虽然也写过爬虫,不过看了下网站,也不算麻烦。于是简单实现了这个自动抓站的功能,最终整理成为一个自动抓站的工具,能省很多的事情。
最近一直在围绕着我的小电脑在转,基本都是这方面的问题。在没有公网IP的情况下,这个问题就是我怎么才能通过域名访问到我家中的服务器。
从上面那篇文章过来的,这里分享下nodejs对文件夹以及子文件进行批量删除的实现。
关于js的编译和压缩,之前做过一个小工具了,主要就是自己项目成员大都没有这部分的技能,导致发布的时候总需要去编译压缩下.. 最终做了个命令行小工具.. 问题不在这里,前一阵子做压缩的时候发现压缩后竟然是undefined.最终才发现是es6的语法问题。