春节怎么抢红包,python一招告诉你再也不会错过微信红包

导语:

哈喽,哈喽鸭!马上就快要过年啦,在春节的时间里,最少不了的就是在微信群里面发红包,图的就是一个喜庆。

两个消息,一个好消息,一个坏消息。

先说好消息,好消息就是微信群里有人要发红包,开心~

春节怎么抢红包,python一招告诉你再也不会错过微信红包_第1张图片

不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 ...

春节怎么抢红包,python一招告诉你再也不会错过微信红包_第2张图片

过了一会,内心的情绪逐渐平复了。

春节怎么抢红包,python一招告诉你再也不会错过微信红包_第3张图片

心想:“难道就这么放弃了吗?晚饭还吃泡面(泡面感觉有被冒犯到

图片

)?但是手动抢肯定没戏,毕竟手can谁也没办法!那就只能试试能不能通过编程的方式实现自动化抢红包了!”

春节怎么抢红包,python一招告诉你再也不会错过微信红包_第4张图片

正文:

1 环境

操作系统:Windows

Python版本:3.7.2

手机系统:Android

2 需求分析

需求就是自动抢红包,打开手机微信,然后找到要抢红包的群,识别群里的红包,然后再执行抢红包的动作。

这里需要注意的是如何识别群里的消息是普通的消息还是红包消息,这里可以通过微信聊天的元素标识来判断,这里是使用了一款名叫Airtest IDE的工具来实现!

3:前置准备

3.1 打开手机的USB调试

因为要电脑连接到手机,所以需要使用一款叫做adb工具,它是安卓的调试桥梁。

打开手机的USB调试功能,然后设置开发人员选项。

春节怎么抢红包,python一招告诉你再也不会错过微信红包_第5张图片

打开USB调试之后,可以通过Airttest IDE来检测adb是否能正常运行!

3.2 下载安装Airtest

下载压缩包过来,解压之后按照步骤安装就行了,打开软件进入这个界面!

春节怎么抢红包,python一招告诉你再也不会错过微信红包_第6张图片

通过USB线连接安卓设备:

春节怎么抢红包,python一招告诉你再也不会错过微信红包_第7张图片

4 抢红包流程回顾

打开手机微信,然后进入到聊天消息列表,从这里选择需要抢红包的群聊,然后分析下里面的元素标识,找对对应群聊的元素标识。

春节怎么抢红包,python一招告诉你再也不会错过微信红包_第8张图片

聊天页面中整体的群聊消息的元素标识

春节怎么抢红包,python一招告诉你再也不会错过微信红包_第9张图片

▲聊天页面中单个群聊消息的元素标识

然后在要抢红包的群里面,识别红包信息,然后执行抢红包的操作。先看下红包标识:

春节怎么抢红包,python一招告诉你再也不会错过微信红包_第10张图片

红包标识1:com.tencent.mm:id/aql

春节怎么抢红包,python一招告诉你再也不会错过微信红包_第11张图片

▲红包标识2 :com.tencent.mm:id/aql

需要注意的是,这里识别了红包的标识,但是要点击到“开”才能抢红包,所以我们还要识别红包标识中“开”对应的内容标识。

春节怎么抢红包,python一招告诉你再也不会错过微信红包_第12张图片

▲大红包页面中”开“的标识 com.tencent.mm:id/d02

还有一种情况,当红包抢光了之后,就没有必要执行这个程序了,所以我们还需要检测这个红包是不是有效红包,如果已经被领完了,或者是给指定领取人的红包,那么在程序执行的过程中就可以直接跳过。

所以给已经领取过的红包添加标识:

春节怎么抢红包,python一招告诉你再也不会错过微信红包_第13张图片

▲已领取红包的标识 com.tencent.mm:id/apk

春节怎么抢红包,python一招告诉你再也不会错过微信红包_第14张图片

▲已被领完红包的标识 com.tencent.mm:id/apk

各元素的标识都已取到,接下来就是组织我们的代码。

5 代码梳理

# 打开手机微信
poco(text='微信').click()
#获取当前页面中所有所有群聊的名称
 群聊消息的元素标识Chat_msg = poco(name='com.tencent.mm:id/d1v').offspring('com.tencent.mm:id/b6e')
# 获取当前页面中所有群聊的名称
Chat_names = []
Chat_names = list(map(lambda x: x.get_text(), Chat_msg))
# 指定抢红包的群聊名称
chat = input('请指定群聊名称:')
if chat in Chat_names:
 index = Chat_names.index(chat)
 # 点击进入指定的群聊
 Chat_msg[index].click()
在微信聊天页面中,获取当前页面中的所有消息元素。
msg_list = poco("android.widget.ListView").children()
#  遍历消息并查找红包
for msg in msg_list:
# 微信红包的标识
 LuckyMoney = msg.offspring('com.tencent.mm:id/aql')
 # 已失效红包(比如已领取、已被领完)的标识
 Invalid = msg.offspring('com.tencent.mm:id/aqk')
 # 判断红包是否有效并抢起来!
 if LuckyMoney:
 pass
  #遍历消息并查找红包
if Invalid.exists() and (Invalid.get_text()=='已领取' or Invalid.get_text()=='已被领完'):
print(f'红包已无效,跳过……')
 continue
else:
 print(f'发现一个新红包,抢起来!')
 poco("com.tencent.mm:id/d1v")
 msg.click()
 click_open = poco("com.tencent.mm:id/d02")
 if click_open.exists():
 click_open.click()
 keyevent('BACK')
#初始化程序
from airtest.core.api import *
auto_setup(__file__)
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

结尾:

 架好神器,坐等红包,你那秒抢的速度,一定会把你七大姑八大姨,惊的一愣一愣的!大家喜欢的记得点点赞,需要完整的项目源码的可以私信我即可哟!

这行蓝色的字体也行wo~

你可能感兴趣的:(Python,程序员,微信,小程序)