1. 概述

刚刚收到了两个消息,一个好消息,一个坏消息。

先说好消息,好消息就是微信群里有人要发红包,开心~

不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 ...

过了一会,内心的情绪逐渐平复了。

心想:“难道就这么放弃了吗?晚饭还吃泡面(泡面感觉有被冒犯到)?但是手动抢肯定没戏,毕竟手can谁也没办法!那就只能试试能不能通过编程的方式实现自动化抢红包了!”

现在捋一下思路,微信群发红包的基本情况是:每一次发红包都会与上一次有一些时间间隔,实现自动化抢红包的基本思路如下:

  • 手动清空之前微信群中的红包记录

  • 执行自动化抢红包程序,进入发红包的微信群(可以暂时将其顶置),循环检测群中是否有红包,发现红包则点击红包

  • 检测红包是否被领取(判断点击后的红包是否出现开字),如果红包未被领取,则点击开字领取红包,再返回群聊界面删除已被领取的红包记录;如果红包已被领取,则返回群聊界面删除已被领取的红包记录,之后以此类推

2. 环境

本文主要环境如下:

  • Win7

  • 小米5s

  • Python3.7

  • Appium1.5

  • 微信7.0.20

如果对环境搭建不熟悉的话,可以看一下:Python + Appium 自动化操作微信入门 和 我用 Python 找出了删除我微信的所有人并将他们自动化删除了。

3. 实现

接下来我们开始手动敲代码,下面一起来看一下具体实现。

首先看一下配置信息,代码实现如下:

desired_caps = {"platformName": "Android", # 系统"platformVersion": "8.0.0", # 系统版本号"deviceName": "m5s", # 设备名"appPackage": "com.tencent.mm", # 包名"appActivity": ".ui.LauncherUI", # app 启动时主 Activity'unicodeKeyboard': True, # 使用自带输入法'noReset': True # 保留 session 信息,可以避免重新登录
}

因为点击红包后需要判断点击后的红包是否被领取,即是否有开字,如图所示:

所以我们定义一个判断元素是否存在的方法,代码实现如下:

# 判断元素是否存在
def is_element_exist(driver, by, value):try:driver.find_element(by=by, value=value)except Exception as e:return Falseelse:return True

因为红包无论是被自己领取还是被他人领取,之后都要删除领取后的红包记录,所以我们再来定义一个删除已领取红包的方法,代码实现如下:

# 删除领取后的红包记录
def del_red_envelope(wait, driver):# 长按领取过的红包r8 = wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/r8")))TouchAction(driver).long_press(r8).perform()# 点击长按后显示的删除wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/gam"))).click()# 点击弹出框的删除选项wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/doz"))).click()

长按领取后红包的效果图如下:

点击长按后显示的删除项之后的效果图如下:

我们接着来看一下进入红包群后的主程序实现,代码如下:

while True:# 有红包则点击wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/r8"))).click()print("点击了红包")# 判断红包是否被领取is_open = is_element_exist(driver, "id", "com.tencent.mm:id/den");print("红包是否被领取:", is_open)if is_open == True:# 红包未被领取,打开红包wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/den"))).click()# 返回群聊wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/dm"))).click()# 删除领取过的红包记录del_red_envelope(wait, driver)else:# 返回群聊driver.keyevent(4)# 删除领取过的红包记录del_red_envelope(wait, driver)

最后,我们通过视频来看一下整体效果:

源码在公号 Python小二 后台回复 201123 获取。

原创不易,如果觉得有一些帮助,希望大家给个分享、在看、赞。

< END >

年轻人不讲武德,用Python自动化抢红包,耗子尾汁相关推荐

  1. Python爬取B站耗子尾汁、不讲武德出处的视频弹幕!

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资料以及 ...

  2. 年轻人不讲武德,竟用Python让马老师表演闪电五连鞭!

    11月份的头条,是属于马保国的. 一位69岁的老同志,惨遭年轻人偷袭,不讲武德. 看看把老同志欺负的... 要不是马老师讲仁义讲道德,甩手就是一个五连鞭. 哈哈哈,所以本期我们就用Python给马保国 ...

  3. 年轻人不讲武德不仅白piao接口测试知识还白piao接口测试工具会员

    朋友们好啊!我是骑着白马的少年!!! 今天有个同学问我,马哥,马哥在吗?我说什么事儿. 啪啪给我打了一堆字,附加给我一张截图.我一看!噢,原来是接口测试,还要引用变量参数. 他说两种方法,一种是叫开发 ...

  4. 【转帖】年轻人不讲武德=白piao接口测试知识还白piao接口测试工具会员

    朋友们好啊!我是骑着白马的少年!!! 今天有个同学问我,马哥,马哥在吗?我说什么事儿. 啪啪给我打了一堆字,附加给我一张截图.我一看!噢,原来是接口测试,还要引用变量参数. 他说两种方法,一种是叫开发 ...

  5. modbustcp测试工具怎么用_年轻人不讲武德不仅白piao接口测试知识还白piao接口测试工具会员...

    朋友们好啊!我是骑着白马的少年!!! 今天有个同学问我,马哥,马哥在吗?我说什么事儿. 啪啪给我打了一堆字,附加给我一张截图.我一看!噢,原来是接口测试,还要引用变量参数. 他说两种方法,一种是叫开发 ...

  6. modbustcp测试工具怎么用_【转】年轻人不讲武德不仅白piao接口测试知识还白piao接口测试工具会员...

    朋友们好啊!我是骑着白马的少年!!! 今天有个同学问我,马哥,马哥在吗?我说什么事儿. 啪啪给我打了一堆字,附加给我一张截图.我一看!噢,原来是接口测试,还要引用变量参数. 他说两种方法,一种是叫开发 ...

  7. modbustcp测试工具怎么用_【转帖】年轻人不讲武德=白piao接口测试知识还白piao接口测试工具会员...

    朋友们好啊!我是骑着白马的少年!!! 今天有个同学问我,马哥,马哥在吗?我说什么事儿. 啪啪给我打了一堆字,附加给我一张截图.我一看!噢,原来是接口测试,还要引用变量参数. 他说两种方法,一种是叫开发 ...

  8. 年轻人不讲武德,一起聊聊List集合(一)

    文章目录 前言 一.List类图 二.源码剖析 1. ArrayList(此篇详解) 2. LinkedList 3. Vector 4. CopyOnWriteArrayList ~~   码上福利 ...

  9. 年轻人不讲武德,一起聊聊List集合(三)

    文章目录 前言 一.List类图 二.源码剖析 1. Vector(此篇详解) 2. ArrayList 3. LinkedList 4. CopyOnWriteArrayList ~~   码上福利 ...

  10. 年轻人不讲卷德,我劝你耗子尾汁

    朋友们好啊,我是T大浑元卷法门掌门人卷包过. 刚才有个朋友问我,"卷老师发生甚么事了".我说怎么回事,给我发了一张截图. 我一看!嗷!原来是昨天,有两个年轻人,二十多岁,一个数分飘 ...

最新文章

  1. 01python语言程序设计基础——初识python
  2. Spring Boot 解决跨域问题的 3 种方案
  3. 伊利和蒙牛之间恩怨情仇
  4. 阿里云西安ACE同城会 | 钉钉生态应用促进企业信息化实战沙龙
  5. C#2.0 从sql server 中读取二进制图片
  6. Effective C++:unio
  7. 使用Excel导入数据到SAP Cloud for Customer系统
  8. Mysql8.0 的sql修改成 Mysql7.X的sql
  9. java中Date类、DateFormat及SimpleDateFormat简介
  10. Eclipse——在eclipse.ini文件中配置JDK
  11. Android开发笔记(成长轨迹)
  12. react实现div隐藏_在React中显示或隐藏元素
  13. proteus中ISIS软件的各种器件的添加
  14. 没Switch也能玩有氧拳击 咕咚智能运动手表F4全面评测
  15. HC32F460 SPI DMA 驱动 TFT显示屏
  16. HDFS BALANCER
  17. arduino/Mixly TEMT6000环境光传感器
  18. 服务器系统不用关机,云服务器不用了要关机吗
  19. 新手真无线蓝牙耳机怎么选?大神推荐高颜值时尚主流蓝牙耳机推荐
  20. 我的世界Linux服务端op,服务器,后台,单机,op必备指令大全

热门文章

  1. Cayley图数据库的简介及使用
  2. 将http网站升级为https网站的方法指南
  3. 结对第一次作业--原型设计
  4. QTP自动化测试实践 详细目录
  5. png 与jpg的区别
  6. 分子动力学模拟学习1-采用AmberTools21的MCPB.py构建金属蛋白的top文件
  7. dell服务器一直连响4声,戴尔电脑开机滴滴响_戴尔电脑开机滴滴响4声
  8. word2003 中调出“公式编辑器”到工具栏中
  9. Android 各大渠道跳转指定游戏界面url_scheme
  10. win10 私有云平台的搭建