使用AutoJs实现微信抢红包的代码


Posted in Javascript onDecember 31, 2020

需要准备的工具有:AutoJs,VSCode,一部手机

1. 首先使用AutoJs的布局设置查找红包的Id

使用AutoJs实现微信抢红包的代码  

使用AutoJs实现微信抢红包的代码

可以看出来红包的id为“aag

关于这个红包的id请以自己看到的为准

因为我在上午写的时候这里的id还是“an3”,到下午的时候就变成“aag”了

然后在VSCode里编写代码

var redEnvelopes = id("aag").find();

返回一个id为aag的redEnvelopes集合

此处注意find和findOne的区别 find:返回所有id为aag的集合

findOne:返回一个id为aag的对象

 既然他是一个集合,现在只需要找到最新的那个红包然后点击就可以了

var redEnvelopes_x = redEnvelopes[redEnvelopes.length - 1].bounds().centerX();
var redEnvelopes_y = redEnvelopes[redEnvelopes.length - 1].bounds().centerY();

此处的代码是获取最新的红包在屏幕上的(X,Y)的坐标

不直接使用click是因为我太菜了

找不到id().findOne().click();又或者id().findOne().children().click();等等这种·····

这样标准的句子点击,原因就是这么简单

有了红包的坐标后就可以直接使用

click(redEnvelopes_x,redEnvelopes_y);

直接点击坐标来打开红包

2. 接着继续布局分析

使用AutoJs实现微信抢红包的代码

红包“开”的id为“den”,以此类推打开红包后返回聊天界面的id为dm

var open = id("den");
if(open.exists()){
  open.findOne().click();
  sleep(2000);
  toast("返回");
  id("dm").findOne().click();
}else{
  toast("红包已领取或过期")
  sleep(1000)
  id("dm").findOne().click();
}

此时已经可以实现自动领取最新红包的动作。

但是

问题也就显现出来了,你会发现他会一直点最新的那一个红包,不管他在屏幕的什么地方,就算已经领取完了他也会一直点,没完没了。

解决思路:

使用一个打开红包和未打开红包的不同来辨别红包是否需要打开。

使用AutoJs实现微信抢红包的代码使用AutoJs实现微信抢红包的代码

.非常轻松的发现可以通过背景颜色来分辨

requestScreenCapture(false);
var img = captureScreen();
var color = images.pixel(img, X, Y);
var point = findColor(img, "#000000", {
  region: [X, Y, 50, 50],
  threshold: 4
});

通过阅读官方文档可以发现有一个专门来辨别颜色的方法

现在只需要知道未领取红包的颜色就可以了。

使用企鹅的截图很方便可以获取鼠标当前的颜色

未领取红包的颜色是(249,165,71) 随便找一个网站把这个RGB值转换成16进制可以得到#F9A547

此时代码为

requestScreenCapture(false);
var img = captureScreen();
var color = images.pixel(img, redEnvelopes_x , redEnvelopes_y );
var point = findColor(img, "#F9A547", {
  region: [redEnvelopes_x , redEnvelopes_y , 50, 50],
  threshold: 4
});

已经可以实现只点击未领取红包,还有一个问题

那就是当前页面没有红包的话红包集合的长度为0,不做处理的话肯定会出问题。

所以要在每次获取集合做后判断一下就可以解决了。

完整代码分享

requestScreenCapture(false);
var redEnvelopes = id("aag");
var redEnvelopes_x = 0;
var redEnvelopes_y = 0;
 
while(true){
  if(redEnvelopes.exists()){
    redEnvelopes_point = id("aag").find();
    if(rb_point.length > 0){
      redEnvelopes_x = rb_point[redEnvelopes_point.length - 1].bounds().centerX();
      redEnvelopes_y = rb_point[redEnvelopes_point.length - 1].bounds().centerY();
      var img = captureScreen();
      var color = images.pixel(img, redEnvelopes_x, redEnvelopes_y);
      var point = findColor(img, "#FA9D3B", {
        region: [redEnvelopes_x, redEnvelopes_y, 50, 50],
        threshold: 4
      });
      if(point){
        toast("发现新红包!");
        click(redEnvelopes_x, redEnvelopes_y);
        sleep(1000);
        openBox();
        sleep(1000);
      }
    }else{
      //当前界面没有红包 不作任何处理
    }
  }
}
 
function openBox(){
  var open = id("den");
  if(open.exists()){ 
    open.findOne().click();
    sleep(2000);
    toast("返回");
    id("dm").findOne().click();
  }else{
    toast("红包已领取或过期")
    sleep(1000)
    id("dm").findOne().click();
  }
}

到此这篇关于使用AutoJs实现微信抢红包的代码的文章就介绍到这了,更多相关AutoJs实现微信抢红包内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jQuery学习笔记之基础中的基础
Jan 19 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
May 17 Javascript
用js实现简单算法的实例代码
Sep 24 Javascript
bootstarp modal框居中显示的实现代码
Feb 18 Javascript
vue-router 学习快速入门
Mar 01 Javascript
基于JavaScript 性能优化技巧心得(分享)
Dec 11 Javascript
Vue.js递归组件构建树形菜单
Dec 24 Javascript
vue iView 上传组件之手动上传功能
Mar 16 Javascript
vue获取当前激活路由的方法
Mar 17 Javascript
JS实现获取数组中最大值或最小值功能示例
Mar 02 Javascript
vue.js路由mode配置之去掉url上默认的#方法
Nov 01 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
Apr 26 Javascript
Vue中inheritAttrs的使用实例详解
Dec 31 #Vue.js
element 动态合并表格的步骤
Dec 31 #Javascript
vue导入.md文件的步骤(markdown转HTML)
Dec 31 #Vue.js
Selenium执行JavaScript脚本的方法示例
Dec 31 #Javascript
javascript实现随机抽奖功能
Dec 30 #Javascript
JS+JQuery实现无缝连接轮播图
Dec 30 #jQuery
微信小程序弹窗禁止页面滚动的实现代码
Dec 30 #Javascript
You might like
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
学习php设计模式 php实现建造者模式
2015/12/07 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
JavaScript浏览器选项卡效果
2010/08/25 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
jQuery瀑布流插件Wookmark使用实例
2014/04/02 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
2017/01/20 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
python实现在pickling的时候压缩的方法
2014/09/25 Python
从Python的源码浅要剖析Python的内存管理
2015/04/16 Python
python中尾递归用法实例详解
2015/04/28 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
Python3 max()函数基础用法
2019/02/19 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
2020/09/17 Python
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
自我评价优秀范文分享
2013/11/30 职场文书
财务信息服务专业自荐书范文
2014/02/08 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
春节联欢晚会主持词
2014/03/24 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
2014企业年终工作总结
2014/12/23 职场文书
教师年终个人总结
2015/02/11 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
python神经网络编程之手写数字识别
2021/05/08 Python