快过年啦,还怕手速慢,我用Python自动抢红包!
相信大家在节假日期间都会和亲戚朋友互发红包吧,有时候是给个人发红包,有时候是在群里抢红包,其实大家都知道真正的意义并不在于红包里的那点钱,最重要的是红包增进了相互之间的感情,并且还增添了几分节日气氛。
但是气氛归气氛,总是让你抢到最小的红包,或者当你看到红包的时候已经被抢光了,这时我们难免会有些不愉快。怎么办呢?别忘记我们有Python啊,号称除了生孩子其余的都会的一种编程语言! 抢红包不得不提一个Xposed框架,它可以说是专为抢红包而生的,但是很有点难受的是:使用Xposed框架有一个前提条件就是手机需要root,所以如果你是苹果手机,那么就需要越狱了,但是手机想要越狱就比较难,尤其是苹果这种国外品牌的手机,想要越狱难度就更大了。
为了自动抢红包,python能帮我们实现吗?
答案是肯定的,本文就带大家一起探索下用Python如何实现自动抢红包。
1 环境
操作系统:Windows
Python版本:3.7.2
手机系统:Android
2 需求分析
3:前置准备
3.1 打开手机的USB调试
想要使用「adb」,需要打开手机的USB调试功能,然后在设置中会出现手机系统设置的“开发人员选项”。
在手机上打开USB调试后,接下来我们通过Airttest IDE验证 adb 运行是否正常。
3.2 下载安装Airtest
下载地址:http://airtest.netease.com/
下载之后,解压打开就可以使用。
使用AirtestIDE对Android应用进行操作,先连接Android设备。
4.抢红包流程回顾
分析下里面的元素标识: ▲聊天页面中整体的群聊消息的元素标识
图片▲聊天页面中单个群聊消息的元素标识
接下来在要抢红包的群中,识别红包并执行抢红包的操作。
先看下红包标识: ▲红包标识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 代码梳理
#获取当前页面中所有所有群聊的名称 群聊消息的元素标识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))
#遍历消息并查找红包 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)
如果本文对你有帮助的话,请不要吝啬你的赞,在看,谢谢!