nodejs桌面自动化操作

nodejs桌面自动化操作

月光魔力鸭

2023-03-12 12:20 阅读 994 喜欢 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


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
因为自己的记录笔记的应用是有道云,又想着把有道云跟自己的小网站联通起来,所以查找了有道云的,然后实现了nodejs版本的sdk.
最近有客户提出了这么一个需求:微信dat文件在解码后的图片无法按照时间进行排序。 是的,解码后的文件的时间都是解码的时间,由于软件比较多,当时没做自动更新,所以在这里做一个小工具,可以将对应的解码后的图片的时间修改为微信dat文件对应的时间
开始入手webpack ,直接看的官方文档和demo,对于自动刷新这部分还是希望通过express 加载插件来控制,但是文档没有提供,经过参考github上其他高玩的套路,最终整理了一个基础的配置版本。
最近在折腾的时候又想写less了,但是换框架了,成了thinkjs,考虑到开发阶段一直编译编译less的情况..最终根据middleware的特点实现了一个超级简单的less中间件。
当我们想实现一个自己的库或模块后,发布的话,需要发布到npm上才能下载。以下是具体步骤
前几天给朋友帮忙,想要一个一模一样的网站...自告奋勇去帮忙.. 结果发现之前一直没处理过类似的情况,虽然也写过爬虫,不过看了下网站,也不算麻烦。于是简单实现了这个自动抓站的功能,最终整理成为一个自动抓站的工具,能省很多的事情。
在开发的时候,经常会有css js 文件的变更,然后部署后发现没有起到作用,最终发现是缓存的问题,如何来方便的解决
在使用marked来做md解析的时候,部分解析规则可能并不是很如意,比如说,我在md中写了a标签,但是这些标签都是在当前页面替换的,而我想要的是新打开窗口。