点击上方“AirPython”,选择“置顶公众号”

第一时间获取 Python 技术干货!

阅读文本大概需要 8 分钟。

目 标 场 景

相信这两天大家都忙碌于各类微信群中,专注抢红包。那是否可以利用 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('已经领取过了,略过~')continueelse: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来帮你~相关推荐

  1. 买不到口罩怎么办?Python爬虫帮你时刻盯着自动下单!| 原力计划

    作者 | 菜园子哇 编辑 | 唐小引 来源 | CSDN 博客 马上上班了,回来的路上,上班地铁上都是非常急需口罩的. 目前也非常难买到正品.发货快的口罩,许多药店都售完了. 并且,淘宝上一些新店口罩 ...

  2. python爬虫怎么挣钱_买不到口罩怎么办?Python爬虫帮你时刻盯着自动下单!| 原力计划...

    作者 | 菜园子哇编辑 | 唐小引来源 | CSDN 博客马上上班了,回来的路上,上班地铁上都是非常急需口罩的.目前也非常难买到正品.发货快的口罩,许多药店都售完了.并且,淘宝上一些新店口罩库存写着非 ...

  3. 买不到口罩怎么办?Python 爬虫帮你时刻盯着自动下单!| 原力计划

    作者 | 菜园子哇 责编 | 唐小引 头图 | 下载自东方 IC 出品 | CSDN 博客 马上上班了,回来的路上,上班地铁上都是非常急需口罩的. 目前也非常难买到正品.发货快的口罩,许多药店都售完了 ...

  4. python编程入门 适合于零基础朋友-Python不能帮你找到女朋友,却能让你成为有钱的单身狗。...

    原标题:Python不能帮你找到女朋友,却能让你成为有钱的单身狗. 王者荣耀的团队年终奖是100个月工资.华为的员工房租补贴就有8000块.BAT校招起步价年薪20万--如果你看到这些消息的第一反应就 ...

  5. r语言软件GDINA_finTech MSc代做、代写Python程序语言、代写MSc program、代做Python设计帮做C/C++编程|代写R语言...

    finTech MSc代做.代写Python程序语言.代写MSc program.代做Python设计帮做C/C++编程|代写R语言Strathclyde Business School, finTe ...

  6. python能帮我们实现什么用_你都用 Python 来做什么?

    「除了生孩子,Python 啥都能做!!!」这句话最近实在是有些火啊,难道 Python 就真的这么强吗?当然,不信咱们可以看一下数据 这是近期 TIOBE 公布的 2019 年 10 月编程语言排行 ...

  7. 刷金币全自动脚本 | 让Python每天帮你薅一个早餐钱(送源码)

    刷金币全自动脚本 | 让Python每天帮你薅一个早餐钱(送源码) 测试开发社区  6天前 文章转载自公众号  AirPython , 作者 星安果 阅读文本大概需要 12 分钟. 1 目 标 场 景 ...

  8. Python爬虫帮你抢秒杀

    什么是爬虫? 网络爬虫又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取网络信息的程序或者脚本,另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫. 简单来讲,爬虫就是一个探测机器 ...

  9. 用python循环帮皇帝选妃

    在古代,皇帝后宫佳丽三千,这么多的妃子可都是皇帝从众多秀女中一个个选出来的,今天我们来用python模拟帮皇帝选妃. 程序的循环可以处理大量的重复性工作,这是程序一个很重要的优势,在python中主要 ...

  10. python抢mac微信红包群_要抢红包?Python来帮你~

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

最新文章

  1. 盘丝洞服务器维护,斗战神哪些区合区了_斗战神合区后名字重复怎么办_快吧游戏...
  2. vue-cli 搭建vue项目
  3. An In-Depth Look at the HBase Architecture--转载
  4. 设置linearlayout最大高度_高位消防水箱设置要求及历年真题
  5. EditText 输入类型 android:inputType=quot;参数类型quot;
  6. 单片机小白学步系列(十二) Proteus仿真软件简介
  7. Linux性能优化2.1 CPU性能统计信息
  8. oracle确实表达式,ORACLE正规表达式
  9. 无线文件服务器,文件共享新方法 无线网络文件共享设置
  10. POJ PKU 2305 java大数进制转化 JAVA 大数转换成字符串 转
  11. 【Java】面向对象基本特性-封装
  12. 【SSH网上商城项目实战13】Struts2实现文件上传功能
  13. iOS开发多线程篇—NSOperation基本操作
  14. Win10系统winload.efi丢失或损坏怎么办?修复步骤(以联想笔记本为例)
  15. 纯css制作导航下拉菜单
  16. 无法加入域--隶属于域、工作组选项为灰色
  17. IE浏览器版本检测小结
  18. 解魔方神器开源啦!摄像头看一眼,就能还原全步骤
  19. 小程序商家如何开通直播带货功能
  20. php 二维数组为空,php 判断数组是否为空的几种方法

热门文章

  1. 男人甜言蜜语是女人“精神鸦片”
  2. JSP实现添加图书、修改图书以及删除图书
  3. glPixelStorei 详解 包括像素传输
  4. 无法打开物理文件 XXX.mdf。操作系统错误 5:5(拒绝访问。)的解决办法
  5. android10 获得设备唯一标识码
  6. windows操作系统常用命令
  7. <Transformer Meets Tracker: Exploiting Temporal Context for Robust Visual Tracking>
  8. Android 数据存储---外部存储(SD卡)
  9. 2022年Landsat8/9 Collection2数据 ENVI5.3打开(暴力打开,亲测有效)
  10. 剑指offer-数组\矩阵