Python教你全自动抢微信红包!啥年代了还手动抢~

最近在做手机app自动化测试,想用python写个自动抢微信红包的程序,先在网上查了一下,发现抢红包教程要么是用itchat模块做到红包提醒功能,要么root手机后用Xposed框架,这两种方式都不是我想要的结果。于是我决定用appium模块实现此功能,最后发现仅用了80行代码,整个过程只涉及到元素检测和模拟点击操作,非常简单易懂,下面给大家详细介绍一下我是如何实现的。

整体思路:

这是整个程序的框架图,首先需要模拟登录微信,然后进入微信聊天界面,接着进入循环过程:

打开第一个聊天窗口,检测有无未领取的红包,若无,则直接返回;

若有,先检测是否被领完,若未领完则打开该红包,若领完则返回。

通过设置适当时间间隔,就可以一直检测最新消息中有无红包。

环境配置:

首先需要安装appium并配置相关环境。主要方法是:

先在官网下载安装appium,然后安装Android SDK,但是直接安装的话会有各种bug,很不方便,我的方法是先安装Android Studio,在它里面可以安装Android SDK,最后再安装JAVA,并配置JAVA_HOME和CLASSPATH两个参数的环境变量,这套流程下来以后就可以使用appium了。

appium使用简介

appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用,支持IOS、Android及FirefoxOS平台。作为自动化测试工具,主要是先定位app界面的元素,再通过模拟点击、滑动等动作来操控手机,从而达到自动化测试的效果。

Python调用appium模块前,要先打开appium客户端

再点击start Server

再点击右上角的搜索框

接着配置4个参数,第一个是手机系统版本,第二个是手机具体型号(在手机设置-关于手机中可以找到),第三、四分别是微信APP的appPackage和appActivity参数,获取方法如下:

1.首先在Android SDK安装文件夹下找到aapt.exe工具,并记住该路径。

2.下载微信app到电脑,保存位置,打开命令行,执行如下代码:

其中上面是aapt.exe工具所在的位置,红色遮住的是微信APP所在的位置,回车,在返回结果中寻找

这是微信APP的appPackage参数

这是微信APP的appAcivity信息。

到此,我们的准备工作就完成了,下面就开始抢红包操作了。

自动抢红包流程:

第一步:模拟登录

主要是用appium模拟按键操作,步骤是比较好理解,代码如下:

其中第一行的desired_caps既是上述的四个参数。


第二步:循环点击第一个聊天窗口所在的坐标

一般情况下,最新消息都是在最上方,所以我们只需循环打开第一个聊天窗口,检测有无未领取的红包即可。

需要注意的是,微信订阅号和一般聊天窗口的返回元素是不同的,要做好区分,本文是识别到微信订阅号后直接删除该聊天框。

第三步:判断当前联系人窗内的红包是否未领取

有时候聊天界面会有好多红包,有已被自己领取的,有未被自己领取的,我们首先要排除掉已领取的红包,先来分析一下已领取的红包:

已领取的红包多了“已领取”3个字

它的元素为:

所以我们只需要分析一下红包元素里是否存在‘com.tencent.mm:id/aul’,就可以判断该红包是否已领取,代码如下:

若存在,说明红包已领过,则返回;若不存在,则进入第四步领取红包。

第四步:领取红包

因为不能确定每个未被自己领取的红包是否已被别人领完,所以打开红包以后还要检测一下红包是否被领完

分两种情况:

1.红包未被领完,则点击领取;

2.红包已被领完,则返回。

点击下面叉号返回:

第五步:整体效果展示

下面给大家演示一下全自动抢红包的整个流程:

需要源码的加下群:850591259

发布了5 篇原创文章 · 获赞 0 · 访问量 4232

猜你喜欢

转载自blog.csdn.net/weixin_43881394/article/details/105200611