使用AutoJs實(shí)現(xiàn)微信搶紅包的代碼
需要準(zhǔn)備的工具有:AutoJs,VSCode,一部手機(jī)
1. 首先使用AutoJs的布局設(shè)置查找紅包的Id
可以看出來(lái)紅包的id為“aag”
關(guān)于這個(gè)紅包的id請(qǐng)以自己看到的為準(zhǔn)
因?yàn)槲以谏衔鐚懙臅r(shí)候這里的id還是“an3”,到下午的時(shí)候就變成“aag”了
然后在VSCode里編寫代碼
var redEnvelopes = id("aag").find();
返回一個(gè)id為aag的redEnvelopes集合
此處注意find和findOne的區(qū)別 find:返回所有id為aag的集合findOne:返回一個(gè)id為aag的對(duì)象
既然他是一個(gè)集合,現(xiàn)在只需要找到最新的那個(gè)紅包然后點(diǎn)擊就可以了
var redEnvelopes_x = redEnvelopes[redEnvelopes.length - 1].bounds().centerX(); var redEnvelopes_y = redEnvelopes[redEnvelopes.length - 1].bounds().centerY();
此處的代碼是獲取最新的紅包在屏幕上的(X,Y)的坐標(biāo)
不直接使用click是因?yàn)槲姨肆?/p>
找不到id().findOne().click();又或者id().findOne().children().click();等等這種·····
這樣標(biāo)準(zhǔn)的句子點(diǎn)擊,原因就是這么簡(jiǎn)單
有了紅包的坐標(biāo)后就可以直接使用
click(redEnvelopes_x,redEnvelopes_y);
直接點(diǎn)擊坐標(biāo)來(lái)打開(kāi)紅包
2. 接著繼續(xù)布局分析
紅包“開(kāi)”的id為“den”,以此類推打開(kāi)紅包后返回聊天界面的id為dm
var open = id("den"); if(open.exists()){ open.findOne().click(); sleep(2000); toast("返回"); id("dm").findOne().click(); }else{ toast("紅包已領(lǐng)取或過(guò)期") sleep(1000) id("dm").findOne().click(); }
此時(shí)已經(jīng)可以實(shí)現(xiàn)自動(dòng)領(lǐng)取最新紅包的動(dòng)作。
但是
問(wèn)題也就顯現(xiàn)出來(lái)了,你會(huì)發(fā)現(xiàn)他會(huì)一直點(diǎn)最新的那一個(gè)紅包,不管他在屏幕的什么地方,就算已經(jīng)領(lǐng)取完了他也會(huì)一直點(diǎn),沒(méi)完沒(méi)了。
解決思路:
使用一個(gè)打開(kāi)紅包和未打開(kāi)紅包的不同來(lái)辨別紅包是否需要打開(kāi)。
.非常輕松的發(fā)現(xiàn)可以通過(guò)背景顏色來(lái)分辨
requestScreenCapture(false); var img = captureScreen(); var color = images.pixel(img, X, Y); var point = findColor(img, "#000000", { region: [X, Y, 50, 50], threshold: 4 });
通過(guò)閱讀官方文檔可以發(fā)現(xiàn)有一個(gè)專門來(lái)辨別顏色的方法
現(xiàn)在只需要知道未領(lǐng)取紅包的顏色就可以了。
使用企鵝的截圖很方便可以獲取鼠標(biāo)當(dāng)前的顏色
未領(lǐng)取紅包的顏色是(249,165,71) 隨便找一個(gè)網(wǎng)站把這個(gè)RGB值轉(zhuǎn)換成16進(jìn)制可以得到#F9A547
此時(shí)代碼為
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 });
已經(jīng)可以實(shí)現(xiàn)只點(diǎn)擊未領(lǐng)取紅包,還有一個(gè)問(wèn)題
那就是當(dāng)前頁(yè)面沒(méi)有紅包的話紅包集合的長(zhǎng)度為0,不做處理的話肯定會(huì)出問(wèn)題。
所以要在每次獲取集合做后判斷一下就可以解決了。
完整代碼分享
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("發(fā)現(xiàn)新紅包!"); click(redEnvelopes_x, redEnvelopes_y); sleep(1000); openBox(); sleep(1000); } }else{ //當(dāng)前界面沒(méi)有紅包 不作任何處理 } } } function openBox(){ var open = id("den"); if(open.exists()){ open.findOne().click(); sleep(2000); toast("返回"); id("dm").findOne().click(); }else{ toast("紅包已領(lǐng)取或過(guò)期") sleep(1000) id("dm").findOne().click(); } }
到此這篇關(guān)于使用AutoJs實(shí)現(xiàn)微信搶紅包的代碼的文章就介紹到這了,更多相關(guān)AutoJs實(shí)現(xiàn)微信搶紅包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Js可拖拽放大的層拖動(dòng)特效實(shí)現(xiàn)方法
這篇文章主要介紹了Js可拖拽放大的層拖動(dòng)特效實(shí)現(xiàn)方法,涉及javascript操作DOM元素及css樣式的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02JavaScript實(shí)現(xiàn)搜索聯(lián)想關(guān)鍵字高亮功能
本文將詳解如何利用原生js+css+html實(shí)現(xiàn)的輸入框搜索聯(lián)想的功能,并集搜索關(guān)鍵字高亮效果,文中的示例代碼講解詳細(xì),需要的可以參考一下2022-06-06JavaScript+Canvas實(shí)現(xiàn)簡(jiǎn)單的柱狀圖
這篇文章主要為大家詳細(xì)介紹了JavaScript如何利用Canvas實(shí)現(xiàn)繪制簡(jiǎn)單的柱狀圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10純JS打造網(wǎng)頁(yè)中checkbox和radio的美化效果
這篇文章主要介紹了純JS打造網(wǎng)頁(yè)中checkbox和radio的美化效果,代碼簡(jiǎn)單易懂,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10JavaScript原型和原型鏈與構(gòu)造函數(shù)和實(shí)例之間的關(guān)系詳解
這篇文章主要介紹了JavaScript原型和原型鏈與構(gòu)造函數(shù)和實(shí)例之間的關(guān)系,每個(gè)對(duì)象都連接到一個(gè)原型對(duì)象,并且它可以從中繼承屬性。所有通過(guò)對(duì)象字面量創(chuàng)建的對(duì)象都連接到object.prototype,它是JavaScript中的標(biāo)配對(duì)象2022-07-07javascript KeyDown、KeyPress和KeyUp事件的區(qū)別與聯(lián)系
KeyDown、KeyPress和KeyUp事件的區(qū)別與聯(lián)系,以后就可以根據(jù)需求來(lái)選擇使用。2009-12-12js類定義函數(shù)時(shí)用prototype與不用的區(qū)別示例介紹
沒(méi)有使用prototype的方法相當(dāng)于類的靜態(tài)方法,相反,使用prototype的方法相當(dāng)于類的實(shí)例方法,不許new后才能使用2014-06-06