快过年了用Python抢红包
创始人
2024-05-10 03:29:12
0

快过年了,刚刚收到了两个消息,一个好消息,一个坏消息。

先说好消息,好消息就是微信群里即将有人要发红包,

坏消息是我抢不上!
难道就这么放弃了吗?那就只能试试能不能通过编程的方式实现自动化抢红包了!就这么一试,我们居然成功啦。

实现自动化抢红包的基本思路如下:

手动清空之前微信群中的红包记录

执行自动化抢红包程序,进入发红包的微信群(可以暂时将其顶置),循环检测群中是否有红包,发现红包则点击红包

检测红包是否被领取(判断点击后的红包是否出现开字),如果红包未被领取,则点击开字领取红包,再返回群聊界面删除已被领取的红包记录;如果红包已被领取,则返回群聊界面删除已被领取的红包记录,之后以此类推

环境

本文主要环境如下:

Win11
安卓手机
Python3.9
Appium1.5
微信3.8.1.26
如果对环境搭建不熟悉的话,可以看一下:Python + Appium 自动化操作微信入门
用Python找出了删除自己微信的所有人并将他们自动化删除了

实现

下面一起来看一下具体实现。

首先看一下配置信息,代码实现如下:

desired_caps = {"platformName": "Android", # 系统"platformVersion": "8.0.0", # 系统版本号"deviceName": "m5s", # 设备名"appPackage": "com.tencent.mm", # 包名"appActivity": ".ui.LauncherUI", # app 启动时主 Activity'unicodeKeyboard': True, # 使用自带输入法'noReset': True # 保留 session 信息,可以避免重新登录
}

因为点击红包后需要判断点击后的红包是否被领取,即是否有开字,如图所示:
在这里插入图片描述
所以我们定义一个判断元素是否存在的方法,代码实现如下:

# 判断元素是否存在
def is_element_exist(driver, by, value):try:driver.find_element(by=by, value=value)except Exception as e:return Falseelse:return True

因为红包无论是被自己领取还是被他人领取,之后都要删除领取后的红包记录,所以我们再来定义一个删除已领取红包的方法,代码实现如下:

# 删除领取后的红包记录
def del_red_envelope(wait, driver):# 长按领取过的红包r8 = wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/r8")))TouchAction(driver).long_press(r8).perform()# 点击长按后显示的删除wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/gam"))).click()# 点击弹出框的删除选项wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/doz"))).click()

长按领取后红包的效果图如下:
在这里插入图片描述

点击长按后显示的删除项之后的效果图如下:
在这里插入图片描述

我们接着来看一下进入红包群后的主程序实现,代码如下:

while True:# 有红包则点击wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/r8"))).click()print("点击了红包")# 判断红包是否被领取is_open = is_element_exist(driver, "id", "com.tencent.mm:id/den");print("红包是否被领取:", is_open)if is_open == True:# 红包未被领取,打开红包wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/den"))).click()# 返回群聊wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/dm"))).click()# 删除领取过的红包记录del_red_envelope(wait, driver)else:# 返回群聊driver.keyevent(4)# 删除领取过的红包记录del_red_envelope(wait, driver)

效果如下:
在这里插入图片描述

相关内容

热门资讯

微视频|中国,加速向新   时间,是记录奋斗的见证者,也是锻造辉煌的雕刻师。  回望来路,中国创新的每一步都铿锵有力。  眺...
多彩活动“解锁”文化跨年新场景...   央视网消息:元旦假期,在河北廊坊、福建永春以及浙江义乌都有精彩的活动,给人们带来丰富的假期体验。...
全国各大口岸迎来出入境客流高峰...   央视网消息:元旦期间,全国各大口岸迎来出入境客流高峰,相关部门采取不同措施方便旅客通关。  北京...
新华社评论员:续写中国奇迹新篇...   新华社北京1月1日电 题:续写中国奇迹新篇章  新华社评论员  “我们要锚定目标任务,坚定信心、...
瑞士酒吧火灾约40人丧生 暂无...   新华社日内瓦1月1日电(记者王其冰)瑞士南部瓦莱州警方1日证实,该州阿尔卑斯山区滑雪胜地克朗-蒙...
全年票房超518亿!中国电影市...   国家电影局2026年1月1日公布,2025年电影票房为518.32亿元,同比增长21.95%。国...
海外人士热议习近平新年贺词:中...   中新社北京1月1日电 综合中新社驻外记者报道:新年前夕,中国国家主席习近平发表二〇二六年新年贺词...
新疆阿勒泰:“银发族”驭雪正青...   中新社新疆阿勒泰12月31日电 题:新疆阿勒泰:“银发族”驭雪正青春  中新社记者 蒋文月  正...
这份“年度答卷”,我们共同署名   岁序更替,华章日新。当我们站在时间的交汇点,回首,是携手走过的来路;向前,有无限辽阔的未来。这一...
视频丨多国人士:习主席新年贺词...   多国人士表示,习近平主席的新年贺词重申进一步全面深化改革开放和全球治理倡议,向国际社会传递了积极...