目录:

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 的下载地址:

下载之后,解压打开就可以使用,Airtest IDE的界面如下:

使用AirtestIDE对Android应用进行自动化操作,第一步就需要连接Android设备。

请使用USB线连接手机,手机上出现的 允许USB调试 弹窗,点击 确定。

点击连接面板中的 refresh ADB 按钮,设备列表将会刷新。

点击列表内对应设备的 Connect 完成连接。

若设备未刷出,点击 refresh ADB 按钮。

播放GIF

若连接遇到问题,请参考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」命令正常运行。

最后柠檬为大家准备了一些python的学习教程分享,希望可以帮助到大家。

请大家转发+关注谢谢啦!

【获取方式】:添加微信18534445303 验证消息写4(一定记得哦),即可获取python自学教程一套。

Python零基础进阶,教程、源码、实战项目,你还怕学不会吗?赶紧领取吧!

python怎么自动抢红包软件_【一点资讯】超强大!教你用Python自动抢红包,再也不会错过任何一分钱...相关推荐

  1. python自动写作软件_火遍全网!3天学会Python自动化办公!

    如今Python在自动化办公领域的表现越来越亮眼,受到了很多非IT的职场人士的推崇,也引得更多的人去了解.学习Python.但是很多初学者都会面临这么一个困惑:想把Python应用在工作中,却不知从何 ...

  2. python画卡通皮卡丘_实现童年Pokémon,教你用Python画一只属于自己的皮卡丘

    原标题:实现童年Pokémon,教你用Python画一只属于自己的皮卡丘 大数据文摘出品 作者:李雷.蒋宝尚 还记得小时候疯狂收集和交换神奇宝贝卡片的经历吗? 还记得和小伙伴拿着精灵球,一起召唤小精灵 ...

  3. python模拟app抢票_亲测,手把手教你用Python抢票

    大数据文摘作品,欢迎个人转发朋友圈,自媒体.媒体.机构转载务必申请授权,后台留言"机构名称+转载",申请过授权的不必再次申请,只要按约定转载即可,但文末需放置大数据文摘二维码. 大 ...

  4. python画k线图_一步一步教你用Python画出专业的K线图

    漂亮的界面是量化程序的脸面,直观专业的界面能帮助我们了解股票的走势和形象地展示量化交易的结果.本文介绍如何使用matplotlib做出专业的K线图和展示各种技术指标: matplotlib是受MATL ...

  5. python写抢火车票软件_用 Python 代码自动抢火车票

    市场上很多火车票抢票软件大家应该非常熟悉,但很少有人研究具体是怎么实现的,所以觉得很神秘,其实很简单.下面使用Python模拟抢票程序,给大家揭秘抢票到底是怎么回事. 该代码仅供参考,主要用于大家沟通 ...

  6. python如何并发运行2个软件_如何利用并发性加速你的python程序(二):I/O 绑定程序加速...

    原标题:如何利用并发性加速你的python程序(二):I/O 绑定程序加速 雷锋网 AI 科技评论按,本文是工程师 Jim Anderson 分享的关于「通过并发性加快 python 程序的速度」的文 ...

  7. python科研用哪个软件_科研画图都用什么软件?

    笔者曾分别或同时使用过Excel.Matlab.Origin.GMT画过图.现在只使用Python的Matplotlib和Basemap模块,完全取代了上面所有软件画图. matplotlib,是最经 ...

  8. python好用的软件_【分享|10款超好用的辅助Python的软件,初学者请查收!】- 环球网校...

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注Py ...

  9. 继续教育自动听课软件_绵阳继续教育 自动挂机学习软件 v2019.5.31

    绵阳继续教育 自动挂机学习软件是吾爱特别论坛@lancy开发的一款针对绵阳继续教育刷学时的一款软件.现爱绿软为大家带来的绵阳继续教育 自动挂机学习软件已经更新到v2019.5.31 绵阳继续教育 自动 ...

最新文章

  1. 插入网络CSS矢量图标、网络SVG矢量图标
  2. 6年,终拿腾讯 offer!
  3. tf.Session().as_default的作用
  4. Protocol buffer的使用案例
  5. 解答: 刷DFT 版 Windows Phone 依然无法越狱安装程序的原因
  6. python数据库连接池工具类_Python数据库连接池DBUtils
  7. STOLUCK:经济下行的当下 ,STO或将帮助中小企业度过寒冬
  8. html5自动把某个层放在屏幕底部,告诉你一个将 footer 保持在底部的最好方法
  9. hdu4027Can you answer these queries?
  10. api 创建zookeeper客户端_一文了解 Zookeeper 基本原理与应用场景
  11. Nginx反向代理与负载均衡等配置文件示例
  12. Hibernate缓存 - 第一级缓存
  13. iphone socket讲解
  14. 腾讯产品策划类笔试题
  15. html表单鼠标悬停变色,当我将鼠标悬停在html表格中时,更改单元格中颜色的颜色...
  16. 最新仿720全景云系统/可生成小程序+带PC端和教程
  17. HomeKit 设备接入协议
  18. Cadence导出gds文件
  19. win10开机无法自动修复此计算机,win10无限自动修复无法开机怎么办_win10开机自动修复失败如何解决...
  20. 幻想未来,助你成为人生赢家?

热门文章

  1. 理解事务处理、事务处理的隔离级别,和使用JDBC进行事务处理
  2. 恒压板框过滤实验数据处理_吉林实验室洗煤压滤机欢迎来电_思诺过滤设备
  3. 【传智播客上海校区】分支结构 - 条件语句
  4. idea常用10个快捷键
  5. zsh和bash的区别
  6. python的变量、运算符与数据类型(day1)
  7. MAC上Pycharm破解导致无法打开
  8. 关于汽车仪表中车速表的内部逻辑
  9. 《单片机串口通信及测控应用实战详解》——6.3 PC端程序设计
  10. Plsql 注册解决办法