目录:

0 引言

1 环境

2 需求分析

3 前置准备

4 抢红包流程回顾

5 代码梳理

6 后记

0 引言

提到抢红包,就不得不提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的界面如下:

使用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抢红包,获取本文所涉及的完整代码

python抢mac微信红包_Python自动抢红包,超详细教程,再也不会错过微信红包了!...相关推荐

  1. Python程序员的浪漫-实现每天定时给Ta推送微信公众号消息提醒超详细教程

    前段阵子,小

  2. 利用Python实现视频中人物的人脸转换超详细教程

    前言:这个项目自己足足研究了有大半年,里面涉及的知识实在是太有趣太广了,所以实在是不能在研究完毕之后再记录下来,这份博客会不断更新,初心也只是给自己做过的事情做个记录,不过本人会力求完整详细.希望客官 ...

  3. 关闭pycharm自动更新超详细教程

    关闭pycharm更新超详细教程 1. 小蛙有话说 与诸君共勉,愿诸君明天依旧光芒万丈.好记性不如烂笔头,让我们一起努力.小蛙今天也是收获满满!!! 2. 关闭pycharm更新步骤 原本你的pych ...

  4. 微信自动回复和自动抢红包实现原理(三):自动抢红包

    阅读该文章前,可以先阅读我前两篇文章 微信自动回复和自动抢红包实现原理(一):AccessibilityService的介绍和配置 微信自动回复和自动抢红包实现原理(二):自动回复 经过前两篇文章的阅 ...

  5. 微信6.6自动抢红包防撤回小程序

    过年很多微信群都有很多红包,开着挂估计能抢个几百. 微信6.6自动抢红包防撤回小程序

  6. 微信、QQ自动抢红包外挂(绿色、无广告--附源码)

    为什么80%的码农都做不了架构师?>>>    说明:该外挂仅供学习.娱乐,请勿用于其他用途,否则后果自负. 功能: 1.支持微信.QQ自动抢红包 2.支持手机待机下自动抢红包 3. ...

  7. 微信自动回复和自动抢红包实现原理(二):自动回复

    阅读这篇文章前,你需要先了解AccessibilityService,可以先阅读我上一篇文章 微信自动回复和自动抢红包实现原理(一):AccessibilityService的介绍和配置 已经了解的朋 ...

  8. 【Python爬虫实例学习篇】——5、【超详细记录】从爬取微博评论数据(免登陆)到生成词云

    [Python爬虫实例学习篇]--5.[超详细记录]从爬取微博评论数据(免登陆)到生成词云 个人博客地址:ht/tps://www.asyu17.cn/ 精彩部分提醒: (1)微博评论页详情链接为一个 ...

  9. 10分钟教你用python打造贪吃蛇超详细教程

    更多精彩尽在微信公众号[程序猿声] 10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来 ...

最新文章

  1. android组件启动,Android四大组件Service之StartService启动
  2. 函数不可访问_C++之访问控制与继承
  3. 内部同步 外部同步 java_如何用匿名内部类实现 Java 同步回调
  4. java concurrentmap原理_Java集合番外篇 -- ConcurrentHashMap底层实现和原理
  5. Python自动化运维——IP地址处理模块
  6. Java - 线程安全的 HashMap 实现方法及原理
  7. string类的常用函数
  8. 校园招聘 - 比较容易的面试题
  9. MITK医学Python开发入门详细版
  10. 计算机应用基础2016高起专,2016年秋季《计算机应用基础(高起专)》期末考核
  11. 全局变量 局部变量 静态变量
  12. 广义相对论-学习记录4-第三章-张量分析与黎曼几何1
  13. c语言中printf输出,C语言中printf输出的总结
  14. python3 加密压缩zip_Python实现加密压缩成RAR或ZIP文件
  15. 微信读书产品分析报告(附:信息结构图、功能结构图、产品结构图)
  16. 小猫爪:AWR294x学习笔记02-AWR294x之DPMIPC
  17. 系统架构设计师论文历年考题(2015-2017)考前冲刺来一波真题
  18. 苹果电脑mac os+win双系统在线安装回macos
  19. MySQL 是什么?
  20. 环境变量使用与何时使用环境变量

热门文章

  1. 跑得比猎豹快的机器人来了,还能游泳跳跃,大小仅为毫米级 | Nature子刊
  2. 算法设计与分析——顺序统计量:期望为线性时间的选择算法
  3. 京东代挂最新拉库大全 2022年01月7日更新
  4. DELL T5820 Ubuntu16.04和Win10双系统安装中遇到的问题
  5. 计算机网络技术应用》期末试卷,计算机网络期末考试试卷及答案
  6. Cad二次开发中使经常使用的线性和线型
  7. 中国纺织洗涤行业竞争调查及需求前景预测报告2022年版
  8. 1700+X370+1088超频数据
  9. [Python] 读取 rar/zip 压缩文件
  10. 引入组件vue可以正常解析,vscode 报错