用 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既是上述的四个参数。

本次采用的是QQ号登陆方式,效果如下:

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

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

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

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

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

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

它的元素为:

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

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

第四步:领取红包

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

分两种情况:

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

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

点击下面叉号返回:

第五步:整体效果展示

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

友情提示语:抢红包虽爽,但也要注意礼尚往来哦!

PS:本文完整代码可在微信后台回复:qhb 获得

继续送书,前天中奖的朋友是:@坏蛋的坏,麻烦看到以后,在后台加我微信,告诉我快递信息,之后安排寄给你。

今天也会从留言区中抽一位朋友,送出下面一本书,后续公布中奖人,感兴趣的话就留言吧,中奖率还是蛮高的。多说句,如果你留言了,那么一定要关注我之后的推文,说不定你就中奖了,如果你忘记了,我就会发给别人。

/今日留言主题/

我经常抢不到红包抢到了也很小, 你呢?

/今日送书一本/

  • 10
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值