第一时间获取 Python 技术干货! 阅读文本大概需要 8 分钟。 目 标 场 景 相信这两天大家都忙碌于各类微信群中,专注抢红包。那是否可以利用 Python 实现自动抢红包呢? 答案是肯定的。这篇文章的目的是利用「Airtest」实现全自动抢群红包。 ps:红包只是图个乐呵,希望本篇文章仅仅用于学习。 准 备 工 作 首先需要在本机上配置好 Airtest 环境,配置及基本的使用方法查看「原文链接」查看。 其次,由于我使用的 Android 手机,所以需要提前配置好 Android 开发环境,保证「adb」命令正常运行。 打开 AirtestIDE,用数据线连上 PC后,就可以点击右上角的 connect 连接设备。 设备连接成功之后,紧接着滑动手机界面到包含「微信图标」的页面,就可以正式进入下面的操作了。 利用 AirtestIDE 新建一个项目,设备类型选中 Android,就会在编码区生成一段初始化的代码。 # -*- encoding=utf8 -*- 拷贝上面的代码到 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 这里我新建了一个名称为「抢红包」微信群,便于后面的测试。 分 析 思 路 首先我们需要打开微信 App。 相比 Appium 需要通过包名和启动 Activity 的形式,Airtest 通过一行代码就可以实现打开应用。 # 指定当前界面text内容为【微信】的控件,执行点击操作 第一个 Tab 就是微信消息列表,这里显示了所有的群聊、单聊及一些消息。 通过「元素 name」找到所有的消息列表元素,然后就可以所有消息的内容。 # 消息列表 找到目标群元素,就可以执行点击操作,进入群聊。 # 群名称 然后获取到当前群聊的所有消息元素。 # 1.获取消息列表元素 抢红包需要从最近的一个红包开始抢,所有需要反转群聊消息。 msg_list_elements = [] 接下来就可以遍历消息列表,获取到有「微信红包」微信红包标识并且还没有抢的红包「包含自己发的」消息元素。 for msg_element in msg_list_elements: 抢红包的操作就很简单了。点击还未抢过的红包,到抢红包对话框界面,点击「抢」按钮,就可以模拟抢一个红包的操作了。 抢完红包之后,需要模拟点击手机上的返回按键到消息列表页面,接着执行下一个抢红包的操作。 msg_element.click() 最后,把上面抢红包的操作定义为一个方法,循环来获取消息列表,获取到新的红包后,马上执行「抢红包」的操作。 while True: 结 果 总 结 执行程序,手机会自动打开微信,找到对应的群聊,进入消息列表页面,「定时」检查列表中的信息,如果发现有红包,就开始抢红包。 当然,消息列表页可以通过 swipe 函数向上滑动,获取更多的红包,原理类似。 |
|