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

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


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


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

心想:“难道就这么放弃了吗?晚饭还吃泡面(泡面感觉有被冒犯到图片)?但是手动抢肯定没戏,毕竟手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做个抢红包神器,看谁抢得过我相关推荐

  1. python实现微信抢红包神器_快过年啦,还怕手速慢,我用Python自动抢红包!

    原标题:快过年啦,还怕手速慢,我用Python自动抢红包! 马上快过年啦,在春节的时间里,最少不了的就是大家在微信群里热热闹闹的发几个微信红包,图的就是一个喜庆. 今天,小编就带领大家用Python来 ...

  2. python电脑微信抢红包神器,基于Airtest实现python自动抢红包

    一.Airtest的介绍 1)Airtest的简介 Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具. Airtest的框架是网易团队自己开发的一个图像识别框架,这 ...

  3. 走亲访友不慌!手把手教你怎样用Mask R-CNN和Python做一个抢车位神器

    现在大家都忙着过大年,按照传统习俗,各种走亲访友.这时候的商场.饭馆也都是"人声鼎沸",毕竟走亲戚串门必不可少要带点礼品.聚餐喝茶. 热闹归热闹,这个时候最难的问题可能就是怎样从小 ...

  4. 用python做一个表白神器_30秒教会你用Python制作520表白神器

    import turtleimport time# writing txtturtle.hideturtle()turtle.penup()turtle.goto(80, 50)# turtle.pe ...

  5. 想学python看什么书-想学习Python做数据分析,应该看哪些书?

    一.Python编程 /> 本书是一本针对所有层次的Python 读者而作的Python 入门书.全书分两部分:第一部分介绍用Python 编程所必须了解的基本概念,包括matplotlib.N ...

  6. python适合做后端开发吗-用Python做后台开发,看这一篇就够了

    Django Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的 ...

  7. 自学python要看哪些书-想学习Python做数据分析,应该看哪些书?

    一.Python编程 /> 本书是一本针对所有层次的Python 读者而作的Python 入门书.全书分两部分:第一部分介绍用Python 编程所必须了解的基本概念,包括matplotlib.N ...

  8. 用python根据生日判断星座_星座生日配对测试爱情,用Python做输入生日,判

    提起星座生日配对测试爱情,大家都知道,有人问用Python做输入生辰,一口咬定二十八宿及性格特点,星宿标记,及兼容二十八宿,另外,还有人想问用Python做输入寿诞,看清星宿及性格特点,二十八宿符号, ...

  9. python写520_用Python做一个520表白神器,值得收藏

    本文最后给出了打包好的软件,无需安装Python环境和各种依赖,直接下载软件,解压后,双击exe文件即可使用. 先来看一下具体的效果. 运行程序. 用Python做一个520表白神器,值得收藏 点击「 ...

最新文章

  1. classname帝国怎么用php调用,帝国cms怎么调用栏目别名
  2. 【福利】微信小程序130个精选Demo合集
  3. MATLAB 基本数据类型和调用方式
  4. python中sort返回值_Python函数你真的都学会了吗?来看看这篇Python高阶函数!
  5. 11、mybatis的功能架构分析
  6. 项目总结(3.28)
  7. 套接字I/O模型-重叠I/O
  8. CSS 设置表格格式
  9. python和access哪个难_python和access的区别
  10. Part Six 地理定位API
  11. AndroidStudio3.0多渠道打包
  12. 创建运行时类的对象--Class.newInstance()
  13. discuz二开的9月最新版本Miko二次元动漫视频网站源码完美搭建视频php源码
  14. oracle12能卸干净吗,Oracle卸载干净方法
  15. opencv库函数学习:Rect函数
  16. 管家婆的验证服务器失败,管家婆登陆提示“连接服务器失败”怎么办
  17. uva10098--排列
  18. css怎么修改图片像素,怎么改变图片宽度_word怎么改变图片像素大小
  19. [DownUnderCTF 2022] crypto部分复现
  20. 完美解决丨1. **`SyntaxError: invalid syntax`**

热门文章

  1. 如何给图片批量添加专属水印
  2. 如何解析复杂的C语言声明
  3. 新的一年里技术管理者(工作者)们如何做好技术规划?
  4. android版本过高导致下载软件后无法自动安装
  5. goEasy实现web推送
  6. FLUENT软件求解器选择(转载)
  7. Ochadoop之shark、spark on yarn搭建[转自 AIMP平台wiki]
  8. VMware10下Mac OS X 10.9系统VMware Tools的安装
  9. 测18日2点墨西哥战法国,胜败如何?
  10. 【Java】Java根据出生日期计算还有几天的生日