使用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 相关文章推荐
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
Jul 25 Javascript
理解Javascript_08_函数对象
Oct 15 Javascript
js中的json对象详细介绍
Oct 29 Javascript
javascript中Math.random()使用详解
Apr 15 Javascript
Ajax清除浏览器js、css、图片缓存的方法
Aug 06 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
Oct 23 Javascript
快速掌握Node.js事件驱动模型
Mar 21 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
Jun 20 Javascript
vue自动化表单实例分析
May 06 Javascript
JavaScript基础教程之如何实现一个简单的promise
Sep 11 Javascript
JS实现可用滑块滑动的缓动图代码
Sep 01 Javascript
js 图片懒加载的实现
Oct 21 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捕获Fatal error错误的方法
2014/06/11 PHP
Opcache导致php-fpm崩溃nginx返回502
2015/03/02 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
Js获取事件对象代码
2010/08/05 Javascript
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
js数组的操作指南
2014/12/28 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
bootstrap侧边栏圆点导航
2017/01/11 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
python 切片和range()用法说明
2013/03/24 Python
Python 如何访问外围作用域中的变量
2016/09/11 Python
Python实现随机漫步功能
2018/07/09 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
Python学习笔记之Break和Continue用法分析
2019/08/14 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
基于python实现模拟数据结构模型
2020/06/12 Python
Python学习笔记之装饰器
2020/08/06 Python
详解python with 上下文管理器
2020/09/02 Python
python collections模块的使用
2020/10/16 Python
利用CSS3实现文本框的清除按钮相关的一些效果
2015/06/23 HTML / CSS
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
英国马匹装备和马术用品购物网站:Equine Superstore
2019/03/03 全球购物
JAVA的事件委托机制和垃圾回收机制
2014/09/07 面试题
电子信息工程自荐信
2014/05/26 职场文书
教师专业自荐信
2014/05/31 职场文书
教师求职自荐书
2014/06/14 职场文书
关于感恩的演讲稿400字
2014/08/26 职场文书
外贸英文求职信范文
2015/03/19 职场文书