目录:0 引言1 环境2 需求分析S92GlKf&&S^N7F3 前置准备4 抢红包流程回顾5 代码sMm9梳理6 后记0 引言提到抢红包,就lgeA,ieAndSO*wR不得不提Xposed框架,它简直是个抢红包的神器,但使用Xpos4ed1o%Bt0h*OzZg&RFJZ/@2eed框架有一个ToKbksj5ai9$i前提条件:手机需要root,对于苹果手机的话就需要越狱了。lH6;6@t.3GbZn5h^W现在的手机想要root或越狱并不容易,同时这会对手ZxWFLVs,4z机安全性带来一些风险,抢红包本身只是个娱乐活动,这样做就得不偿失了。
30D&EP为了自动抢红包,python能帮我们实现吗?
答案是肯定的,本文就带大家一起pTOM$C#moOiYKgx/Fp;7bE@J9SE探索下用Python如何实现自动抢红包。
1 环境操476H1HoRs02YcJ1wfg作系统:Windows
Python版本:3.7.2
手机系统:A#JNJ7$tPxpo,Ondroid.s@#KA%pNihwaj
2 需求分析这里我们的需求是实现stlGzKuE7ano$uuMcOhef5自动抢红包。首先要打开微信,进入到指定的群聊,识别微信红包R*hqgAZZZ0Y、执行抢红包的GYTk^Wxh01W^xhY!!Zyd3718M动作。这就是关键的步骤,简单清晰。
因为电脑版本的微信没有抢红包xLU!SGCan75H,;fG@IuB/MqTR!Qpr的功能,我们只能手机微信,那么就需要MrL51$G$4INdiNI把手机连上电脑,^pXNudmXwAKPIaM*v3$x&vUQ通过电脑控制手机来自动%NIMQ2tPDhD;xcAFsarC抢,那就需要确保「adb」命令可正常执行。
识别微信中的消息,是&.j7g%OO3iD8dH$zjuha8g红包还是普TBsen!fYNnxF%%*通的信息,这里我们通过聊天消息的元素标识来判断。这里我们借助了「Airtog8Q@#5q1Ai9M7*IvUxENUMa3b^Gest IDE」工具来实现。
3 前置准9o2jU64*lM6Zhm$kZ3II备3.1 打开Zi!Re@60wB.bniT4pWODx6lvCy3S5手机的UNOMxYcmqdSB调试要正常使用「adb」需要打开USB调$AMwqk$tYj$/28aMzh1De##28VR6试,设置项通e,sE!,k&yc.h&8#Rp常出现在手机系统设置中的[开发人员选项]里面。
在手机上打开USB调试XGS5*yr,VBYhsc$后,接下来我们通过Airttest I5extNNCk1Lz5JC.RUmDE验证 adb 运行是否正常。
3GC2E4O02,3Z9crlfku/6&WNt.2 下载安装Airtest UJo%^ZjEg,n9o0,71nc!dQdP^zfuLID&8NNEE8iSF3yYkYt@3#SimMi&^tGE开始之前HB.7u先,先解释下airttest相关概念iWgazw$L/V@:
Airtest 是一个跨平台的、基于图像识别的UTevfTq6/Z6YTEgKGyT@LMRKoAI自动化测试框架,适用于游O!NqK1戏和App,支持平#PhMjPMN@bPe@X台有Windows、Andro6Z@hy8l4z7jSgslid和iOS。
Poco是UmkqVvf3b3JW7T1u2h.%iTI6yk一款基于UI控件识别的自动化xX.5IhsBBh9XKEyYM,Ckbv0I测试框架,目前支持Unity3D/cocos3qOAwsWYLGKu$A1k#oL7&n2dx-*/AndroiaiHRI/d原生app/iOS原生app/微信小程Wq4QiF3UVeqKTbhlT序,也可以在cr^g@sFxDn^LMGXYfsbHpkkIG9其他引擎中自行接VA3GKLp0jUH/M^W2tLgM/yTMDXD;f1入poco-sdk来使bnv1cgxlGnqwC用。
AirterpCSaju*stIDE 是一个我们配套推出hiV7rhEC的跨平台的UI自动化测试编辑器,内置了Airtest和PocEw2@!,0o的相关插件功能,能够使用它快速简单地编写脚yBg*!PSq/e8QW5ByuJqW本。
AirteOL.;ZDh1husrXU6LwYrvYY,Wst IDE 的下载地址:
hxdE41hFMBC#Qc,2Svjttp://airtest.netease.com/
下载之后,解SKKkkFl压打开就可以使用,Airtest IDE的界面如下:!NQzAl
使用AirtestIDE对Android应用进行;W4;;86DOS!3nVXhpn07KH3Z1B自动化操作,第一TuX%;KYJgE&步就需要连接Android设备。
请使用USB线连接手机,手机上出现的 允许sSLl@PsKD$.DYrwzk6Uo/k#ZrGjUSB调试 弹窗,点击 确定。点击连接面板中的 refresh ADB 按钮,设.aQCE/备列表将会刷新。点击列表内对应设备QaTXg的 Connect 完成连接。若设备未刷出,点击 refresh ADBsyOa 按钮。
若连接WZX@kimpLvxxvfuULem4遇到问题,请参考Airtest的官方教程:Android真机连接
A1uKM/^5I!H4 抢红包流程回顾打开微信,在最左侧的Tab页,微信消息列表,我们需要rshxx46evNz@qrd2MLBISX1wTYtp从这里选择指定的群聊来抢QMya7Fx53g6t@Ka5iCjw&yWC@红包。
在AirtestIDE中,我们可以通过暂停功能,冻结当前的UI2m^oZCDe@UWypp9WJa5yMqqxI02树形结构来精确地检oqqCC视UI控件,我们先来分析下这个页面中元素标识nf#NVaWdQwJTEz。
▲聊天页面中整体的群聊消息的元素标识 comUxBRSVDfLAFy@qJW.tencent.mm:id/d1v
▲聊天G7NSNsQ页面中单个群聊消息的元素.lR%amSL2H标识 com.tencent.mm:i*1g&;0#mPvNzGd/b6e
接下来进入我们准备要抢红包的群聊中,识别出P&@,FKYXaeQ,AH红包并执行抢红包的动作。
我们先来看看红包的标识:
▲红包#4OGf;PFt%a标识的示例1 com.te#r1/Pncent.mm:id/aql
▲红包标识的示例2 comm8.rXxgKMy&v$jq*%B.tencent.mm:id/aql
点击红包,记录下弹出的大红包页面中“.I90aL,U!6^TC.Bwn6AH1X$开”的元素标识
▲大红包页面中”开“的标识 com.tencenqVSoUPsguk3t.mm:id/d02
这里我们需要判断是红包是否有效,比tHUF9o04BB如已被领完或是已被自己领取的红6dHSFN@5!包就是无效的,我们在执行时可yA1JX以跳过这些。
▲已领取红包的标识 com.tencent.mm:9#;GKN2@@WsXusZDJ@dC6aad2sid/apk
▲已被领完红包的标识 @1W3b*8sh$/IQVVfZ53s2B&uxWqWScom.tencent.mm:id/apk
我们用的各元素的标识都已取到,xEfWCf55lNvtB4&&Ks/q接下来就是组织我们的代码。
5 代码梳理首先得打开微信,利用AirteHAfRsS5dMr1/ji7y5fst启动app应用,只须一行代码即可搞定,如下
# 打开手,j^kOEPSJh2WPPEtcne,!x机微信poco(text='微信RD#yHLPAeMdZh.39;).click()获取当前页面中所有所有群聊的名称
K%XG0zEf1zh,JyEF!Qc86lLkI# 群聊消息的元素标识Chat_msg =s!9zpgohJNJhf3Pz&7MX*;#!try9 poco(name='com.tence^92/CFko^37NEont.mm:id/d1v').offspring('cf;QSXYu@$ar.mvRe%;BmSP@Kuhom.tencent.mm:id/b6e')#&RTOj7.2dUwmLQ.QQlUqnbsp;获取当前页面中所有群聊的名称Chat_nam9gH3dCsjJy,zOU8ihlMes = []ChsCiFUA@Q1$PuxrrA,8;at_names&nXueRb/PzipPU.iv07%EUtbsp;= list(map(lambda&nbs#0n4$4dj9@EoG!p;x:&nb&qbWnoT9!V@iF/$lOyVb8;BUfYknN@sp;x.get_text(), ChaYT/qPD#J0DTPxznOH5e#it_msg))选择并进入指定的群聊
U%/nWbJyY%!n9aD/XnuTlm8,fkf# 指定抢红包的群聊名称chat = a5k6E3g#b#6vmpCrs/YC0Uinput('请指定群聊名称:')if chat&TbNMbRw;Gnbsp;in Chat_names: &nble/Yla@&.*tnAg.sp;&nbs8Akdp;&nbsTYdrPWp;index b7Y1C1#H%hI/RAn$r=s;mv whk4FGiQFDH!w5GA#i;Chat_names.index8wq,SgltjwNeWO4vL.(chat) # q4FCLMeO!45;点击进入指定的群聊  @&Gw4sMWWL; Ch1tRn!1V1jJD9lhU6S/ldqsx7@$F/at_msg[indexR278t&im].click()在微信聊天页面中,获取当前页面中的所有消息元素tezaH1N。msg_lisOgTcKkIJVOe017DS2pcez2z30jbbgHt&nbss^S0VVGPXgrx^3n4*8*q8zzwbO#J#Qp;= poco("android.widget.LisJ,cLo^Y%7H4AFa@uCH.jyI,tView").children()遍历消息并查找红包
for&;lTrnbsp;msg in msg_list:&nbsfHy;u#Tr,Y8wYqnUP%Qp; # 微信红包的标识T.TogLLnLf,@QeFoYdv &nZ$o9gv5HtY!mVuhDubsp; LuckyMoney = msg.&^hHoffspring('com.ten0ZCxTJaW/ymuGJAPft9y5cent.mm:id/aql') YQe@715p,3ACRyK; # 已失效红包(比如已领取、MvyRcd.l3kWo38;GlGzB,Sms已被领完)的标识 InvaleVKxGRid = msg.kGSX^,*6*91!!I@@0offspring('com.tencent.mm:id/aqkTuYc6nF9;) 0W2NrWT2e6f # 判断红包是否有效并抢起来!&q5omrtnbsp; &nbsWvGeUO2lrzL#9STZsZNmIp;&nbveiw1jqfi%YT%@R1D&r7yX6sp;iyKUQ0l8f LuckyMoney: 8Wf2XwIprpL^SogX*c9e 下一篇:微信红包先抢和后抢差距为何这么大
0
丙肝是什么病微信交流群,丙肝母婴贴吧
耳鸣微信交流群,全国耳鸣交流群
打呼噜微信交流群,怎么加入陌生微信群
「东莞车迷微信群」求个东莞的大众高尔夫微信群
「聋人微信和扣扣群」微信有聋哑人的群吗
「加入菏泽大型微信群」如何加入菏泽一中高三一部十八班微信群
「启动微信群名软件」微信群怎么设置不让别人改群名?
「微信红包群规则复制」微信红包群规章制度是什么样的?
「微信稀奇古怪总代群」我想在微信上卖稀奇古怪的玩意,一件代发的,不需要加盟费!有的留个
「微信群群主有哪些特权」微信群主有哪些特权?