目 标 场 景

相信这两天大家都忙碌于各类微信群中,专注抢红包。那是否可以利用 Python 实现自动抢红包呢?

答案是肯定的。这篇文章的目的是利用「Airtest」实现全自动抢群红包。

ps:红包只是图个乐呵,希望本篇文章仅仅用于学习。

准 备 工 作

首先需要在本机上配置好 Airtest 环境,配置及基本的使用方法查看「原文链接」查看。

其次,由于我使用的 Android 手机,所以需要提前配置好 Android 开发环境,保证「adb」命令正常运行。

打开 AirtestIDE,用数据线连上 PC后,就可以点击右上角的 connect 连接设备。

设备连接成功之后,紧接着滑动手机界面到包含「微信图标」的页面,就可以正式进入下面的操作了。

利用 AirtestIDE新建一个项目,设备类型选中 Android,就会在编码区生成一段初始化的代码。

# -*- encoding=utf8 -*-

__author__ = "xingag"

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)

拷贝上面的代码到 Pycharm 中,并安装「pocoui」库。

pip3 install pocoui

ps:注意Mac OS 安装会提示 adb 没有运行权限,只需要授予响应的权限即可。

# chmod +x /Users/xingag/anaconda3/lib/python3.7/site-packages/airtest/core/android/static/adb/mac/adb

chmod +x[本机adb路径]

这里我新建了一个名称为「抢红包」微信群,便于后面的测试。

分 析 思 路

首先我们需要打开微信 App。

相比 Appium 需要通过包名和启动 Activity的形式,Airtest 通过一行代码就可以实现打开应用。

# 指定当前界面text内容为【微信】的控件,执行点击操作

poco(text='微信').click()

第一个 Tab 就是微信消息列表,这里显示了所有的群聊、单聊及一些消息。

通过「元素 name」找到所有的消息列表元素,然后就可以所有消息的内容。

# 消息列表

item_elements = poco(name='com.tencent.mm:id/b4m').offspring('com.tencent.mm:id/b4o')

# 获取所有消息列表的名称

names = list(map(lambda x: x.get_text(), item_elements))

找到目标群元素,就可以执行点击操作,进入群聊。

# 群名称

target = '抢红包'

index = names.index(target)

# 点击进入群聊

item_elements[index].click()

然后获取到当前群聊的所有消息元素。

# 1.获取消息列表元素

msg_list_elements_pre = poco("android.widget.ListView").children()

抢红包需要从最近的一个红包开始抢,所有需要反转群聊消息。

msg_list_elements = []

for item in msg_list_elements_pre:

msg_list_elements.insert(0, item)

接下来就可以遍历消息列表,获取到有「微信红包」微信红包标识并且还没有抢的红包「包含自己发的」消息元素。

for msg_element in msg_list_elements:

# 2.1 微信红包标识元素

red_key_element = msg_element.offspring('com.tencent.mm:id/apf')

# 2.2 是否已经领取元素

has_click_element = msg_element.offspring('com.tencent.mm:id/ape')

# 2.3 红包【包含:收到的红包和自己发出去的红包】

if red_key_element:

print('发现一个红包')

if has_click_element.exists() and (

has_click_element.get_text() == '已领取' or has_click_element.get_text() == '已被领完'):

print('已经领取过了,略过~')

continue

else:

print('马上抢红包')

else:

print('红包元素不存在')

continue

抢红包的操作就很简单了。点击还未抢过的红包,到抢红包对话框界面,点击「抢」按钮,就可以模拟抢一个红包的操作了。

抢完红包之后,需要模拟点击手机上的返回按键到消息列表页面,接着执行下一个抢红包的操作。

msg_element.click()

click_element = poco("com.tencent.mm:id/cv0")

if click_element.exists():

click_element.click()

# 返回

keyevent('BACK')

最后,把上面抢红包的操作定义为一个方法,循环来获取消息列表,获取到新的红包后,马上执行「抢红包」的操作。

while True:

get_red_package()

print('休眠1秒钟,继续刷新页面,开始抢红包。')

sleep(1)

结 果 总 结

执行程序,手机会自动打开微信,找到对应的群聊,进入消息列表页面,「定时」检查列表中的信息,如果发现有红包,就开始抢红包。

当然,消息列表页可以通过 swipe 函数向上滑动,获取更多的红包,原理类似。

我已经将全部源码上传到后台上,公众号回复「抢红包」即可获得。

如果你觉得文章还不错,请大家点赞分享下。你的肯定是我最大的鼓励和支持。

python抢mac微信红包群_要抢红包?Python来帮你~相关推荐

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

    目录: 0 引言 1 环境 2 需求分析 3 前置准备 4 抢红包流程回顾 5 代码梳理 6 后记 0 引言 提到抢红包,就不得不提Xposed框架,它简直是个抢红包的神器,但使用Xposed框架有一 ...

  2. python微信红包生成器_要抢红包?Python来帮你~

    目 标 场 景 相信这两天大家都忙碌于各类微信群中,专注抢红包.那是否可以利用 Python 实现自动抢红包呢? 答案是肯定的.这篇文章的目的是利用「Airtest」实现全自动抢群红包. ps:红包只 ...

  3. python 微信红包群_Python自动抢红包,超详细教程,再也不会错过微信红包了!...

    目录: 0 引言 1 环境 2 需求分析 3 前置准备 4 抢红包流程回顾 5 代码梳理 6 后记 0 引言 提到抢红包,就不得不提Xposed框架,它简直是个抢红包的神器,但使用Xposed框架有一 ...

  4. python如何实现微信自动聊天_如何利用python实现微信智能聊天功能,具体该怎么做?...

    这个实现不难,需要先安装一下itchat库,之后注册一下图灵机器人,最后就可以编程实现微信智能聊天功能了,下面我简单介绍一下实现过程,实验环境win10+python3.6+pycharm5.0,主要 ...

  5. python爬取微信聊天记录数据_[使用案例]python如何爬取微信好友信息?(上)

    Python3如何爬取微信好友基本信息,并且进行数据清洗?下面跟着IP海带来的教程,我们一起看看具体的操作要怎么实现. 1.登录获取好友基础信息: 好友的获取方法为get_friends,将会返回完整 ...

  6. ‘‘红包来了—红包来了—‘‘Python制作一个微信红包提示系统。

    导语 进了一个微信群, 群里红包满天飞, 本来只是想安安静静抢个微信红包, . ...... 更令人意想不到的是, 群主在短短三个月时间里, 从中获取收益100多万元, 从无业游民摇身一变 挎名包戴名 ...

  7. python实现自动化抢微信红包功能_【Python】用Python实现微信自动化抢红包,再也不用担心抢不到红包了...

    1. 概述 刚刚收到了两个消息,一个好消息,一个坏消息. 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 - 过了一会,内心 ...

  8. python发微信红包群二维码_小伙利用Python群发“支付宝”红包短信,一天赏金可达上千元...

    原标题:小伙利用Python群发"支付宝"红包短信,一天赏金可达上千元 注:以下教程仅供学习交流,娱乐而已,切勿用在非法途径 前言 最近朋友圈.微信群.QQ群里面全是什么扫码领取支 ...

  9. python爬虫爬微信红包_爬虫之微博抢红包

    先让大家看下最终效果... 1,使用的工具及包 google浏览器 User-Agent Switcher for Google Chrome 这是一个能自定义浏览器头的Google浏览器插件 req ...

最新文章

  1. 第五周周记(国庆第四天)
  2. 基于python和postgreSQL存储图片
  3. 全球与中国OLED大平板涂胶显影设备市场运营状况分析及投资前景建议报告2022-2028年版
  4. 【实用】SAP Call Transaction下钻功能大全
  5. HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容
  6. java for新循环_Java 8 新语法习惯 (for 循环的函数替代方案)
  7. redission java_Java注解如何基于Redission实现分布式锁
  8. windows下使用cmake+mingw配置makefile(1)
  9. java抓取网页数据_简易数据分析 10 | Web Scraper 翻页——抓取滚动加载类型网页...
  10. 【PhotoShop基础A篇】磨皮/图层/液化
  11. 【目标流畅阅读文献】kick off
  12. RecyclerView或是ListView(列表)点击某个条目保持选中【非常巧妙】
  13. 第十四周 项目2-用文件保存的学生名单
  14. qemu-guest-agent调研
  15. 沉病孩子留遗嘱 父疏申请接济劫持红十字员农
  16. java 使用itext分割pdf
  17. 大数据毕设/课设 - 水质情况实时监测预警可视化设计与实现
  18. 1.1 Tekton学习笔记之基本概念
  19. CCF试题 201609-3 炉石传说
  20. 【demo】Excel批量设置超链接(java代码实现)

热门文章

  1. 谷歌浏览器开发工具调试样式
  2. Html设置超链接文字颜色
  3. ITIL 系列bussiness 1
  4. 双亲委派模型以及SpringFactoriesLoader详解(最全最简单的介绍)
  5. Html中img src=/图片路径的使用方式
  6. 经历多次重写,苹果平台最强科学计算器PCalc背后的故事
  7. 选择与随缘----老舍和西蒙的关联
  8. VBA AutoExec 宏
  9. java读取xslx内容,内容转换成docx和pdf,包括图片
  10. 剑指offer -- 最长不含重复字符的字符串