摘要:首先要打开微信,进入到指定的群聊,识别微信红包执行抢红包的动作。是一款基于控件识别的自动化测试框架,目前支持原生原生微信小程序,也可以在其他引擎中自行接入来使用。
目录:
0 引言
1 环境
2 需求分析
3 前置准备
4 抢红包流程回顾
5 代码梳理
6 后记
提到抢红包,就不得不提Xposed框架,它简直是个抢红包的神器,但使用Xposed框架有一个前提条件:手机需要root,对于苹果手机的话就需要越狱了。现在的手机想要root或越狱并不容易,同时这会对手机安全性带来一些风险,抢红包本身只是个娱乐活动,这样做就得不偿失了。
为了自动抢红包,python能帮我们实现吗?
答案是肯定的,本文就带大家一起探索下用Python如何实现自动抢红包。
1 环境操作系统:Windows
Python版本:3.7.2
手机系统:Android
2 需求分析这里我们的需求是实现自动抢红包。首先要打开微信,进入到指定的群聊,识别微信红包、执行抢红包的动作。这就是关键的步骤,简单清晰。
因为电脑版本的微信没有抢红包的功能,我们只能手机微信,那么就需要把手机连上电脑,通过电脑控制手机来自动抢,那就需要确保「adb」命令可正常执行。
识别微信中的消息,是红包还是普通的信息,这里我们通过聊天消息的元素标识来判断。这里我们借助了「Airtest IDE」工具来实现。
3 前置准备 3.1 打开手机的USB调试要正常使用「adb」需要打开USB调试,设置项通常出现在手机系统设置中的[开发人员选项]里面。
在手机上打开USB调试后,接下来我们通过Airttest IDE验证 adb 运行是否正常。
3.2 下载安装Airtest IDE开始之前先,先解释下airttest相关概念:
Airtest 是一个跨平台的、基于图像识别的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Android和iOS。
Poco是一款基于UI控件识别的自动化测试框架,目前支持Unity3D/cocos2dx-*/Android原生app/iOS原生app/微信小程序,也可以在其他引擎中自行接入poco-sdk来使用。
AirtestIDE 是一个我们配套推出的跨平台的UI自动化测试编辑器,内置了Airtest和Poco的相关插件功能,能够使用它快速简单地编写脚本。
Airtest IDE 的下载地址:http://airtest.netease.com/
下载之后,解压打开就可以使用,Airtest IDE的界面如下:
使用AirtestIDE对Android应用进行自动化操作,第一步就需要连接Android设备。
请使用USB线连接手机,手机上出现的 允许USB调试 弹窗,点击 确定。
点击连接面板中的 refresh ADB 按钮,设备列表将会刷新。
点击列表内对应设备的 Connect 完成连接。
若设备未刷出,点击 refresh ADB 按钮。
若连接遇到问题,请参考Airtest的官方教程:Android真机连接
4 抢红包流程回顾打开微信,在最左侧的Tab页,微信消息列表,我们需要从这里选择指定的群聊来抢红包。
在AirtestIDE中,我们可以通过暂停功能,冻结当前的UI树形结构来精确地检视UI控件,我们先来分析下这个页面中元素标识。
▲聊天页面中整体的群聊消息的元素标识 com.tencent.mm:id/d1v
▲聊天页面中单个群聊消息的元素标识 com.tencent.mm:id/b6e
接下来进入我们准备要抢红包的群聊中,识别出红包并执行抢红包的动作。
我们先来看看红包的标识:
▲红包标识的示例1 com.tencent.mm:id/aql
▲红包标识的示例2 com.tencent.mm:id/aql
点击红包,记录下弹出的大红包页面中“开”的元素标识
▲大红包页面中”开“的标识 com.tencent.mm:id/d02
这里我们需要判断是红包是否有效,比如已被领完或是已被自己领取的红包就是无效的,我们在执行时可以跳过这些。
▲已领取红包的标识 com.tencent.mm:id/apk
▲已被领完红包的标识 com.tencent.mm:id/apk
我们用的各元素的标识都已取到,接下来就是组织我们的代码。
5 代码梳理首先得打开微信,利用Airtest启动app应用,只须一行代码即可搞定,如下
# 打开手机微信 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
在LuckyMoney中定义抢红包的动作
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")6 后记
若我们在一台电脑上并不想安装Airtest IDE,还能执行这个脚本吗?
当然可以,只需要安装好「pocoui」这个第三方库就可以“抛弃”它了!
pip install pocoui
利用 AirtestIDE 创建一个项目时,设备类型选中 Android,就会在编码区生成一段初始化的代码。
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)
我们自己编写的Python代码中也需要加上这段初始化的代码。
再次强调,在执行脚本时要确保手机连上电脑,并确保「adb」命令正常运行。
对Airtest有兴趣的小伙伴,可以参考airtest官方教程:AirtestIDE官方文档
关注公众号「Python专栏」,后台回复:python抢红包,获取本文所涉及的完整代码
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/43995.html
摘要:先来看下效果实际使用不需要打开手机,此处为演示需要实现代码主要有两个部分接收红包消息直接从手机端微信获取数据比较麻烦,主流的方法都是通过微信网页版来获取。这里我用的是,通过即可安装,之前我也写过文章介绍微信机器人进化指南。 又到了辞旧迎新的时候,群里的红包也多起来了。然而大佬们总是喜欢趁我不在的时候发红包,经常打开手机,发现红包已被抢完,感觉错过了一个亿。 安卓上有不少红包助手工具,但...
摘要:目录引言环境需求分析前置准备逛店铺流程回顾代码全景展示总结引言最近叠猫猫的活动可真是十分的火爆,每天小伙伴们为了合猫猫忙的可谓是如火如荼。为啥要叠猫猫呢赚猫币得现金红包眼看为实,先来看看我朋友的购物订单。 目录:0 引言1 环境2 需求分析3 前置准备4 逛店铺流程回顾5 代码全景展示6 总结 0 引言 最近叠猫猫的活动可真是十分的火爆,每天小伙伴们为了合猫猫忙的可谓是如火如荼。为啥要...
摘要:活动规模既然公司对自如客这么阔,那对我们员工也得够意思,所以年底我们共准备了个活动。拆分后,红包占有只需操作,响应性能已不是问题。 首发于 樊浩柏科学院 2017 年是自如快速增长的一年,自如客突破 100 万,管理资产达到 50 万间,在年底成功获得了 40 亿 A 轮融资,而这些都要感谢广大的自如客,公司为了回馈自如客,在六周年活动时就发放了 6000 万租住基金,当然年底散币活...
阅读 2552·2021-08-20 09:38
阅读 1335·2019-08-30 15:43
阅读 574·2019-08-29 17:13
阅读 1553·2019-08-29 14:01
阅读 1288·2019-08-29 13:29
阅读 2295·2019-08-23 18:29
阅读 2028·2019-08-23 17:51
阅读 1857·2019-08-23 17:16