使用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 相关文章推荐
javascript实现切换td中的值
Dec 05 Javascript
javascript二维数组转置实例
Jan 22 Javascript
js简单的点击返回顶部效果实现方法
Apr 10 Javascript
被遗忘的javascript的slice() 方法
Apr 20 Javascript
json实现添加、遍历与删除属性的方法
Jun 17 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
Feb 08 Javascript
Nuxt.js踩坑总结分享
Jan 18 Javascript
详解如何在项目中使用jest测试react native组件
Feb 09 Javascript
详解mpvue scroll-view自动回弹bug解决方案
Oct 01 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
Mar 10 Javascript
vue fetch中的.then()的正确使用方法
Apr 17 Javascript
Vue双向数据绑定(MVVM)的原理
Oct 03 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
PHP写日志的实现方法
2014/11/05 PHP
php中in_array函数用法探究
2014/11/25 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
javascript 类型判断代码分析
2010/03/28 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
JavaScript数组去重的两种方法推荐
2016/04/05 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
原生js中ajax访问的实例详解
2017/09/19 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
javascript验证form表单数据的案例详解
2019/03/25 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
2020/05/18 Python
python 实现性别识别
2020/11/21 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
美国踏板车和轻便摩托车销售网站:Mega Motor Madness
2020/02/26 全球购物
仪器仪表检测毕业生自荐信
2013/10/31 职场文书
文明礼仪小标兵事迹
2014/01/12 职场文书
大学同学聚会邀请函
2014/01/19 职场文书
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
孩子教育的心得体会
2014/09/01 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
如何自己动手写SQL执行引擎
2021/06/02 MySQL
python 中yaml文件用法大全
2021/07/04 Python
如何Tomcat中使用ipv6地址
2022/05/06 Servers