1. 概述

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

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

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

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

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

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

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

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

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

2. 环境

本文主要环境如下:

Win7

小米5s

Python3.7

Appium1.5

微信7.0.20

3. 实现

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

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

1

2

3

4

5

6

7

8

9

desired_caps = {

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

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

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

1

2

3

4

5

6

7

8

# 判断元素是否存在def is_element_exist(driver, by, value):

try:

driver.find_element(by=by, value=value)

except Exception as e:

return False

else:

return True

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

1

2

3

4

5

6

7

8

9

# 删除领取后的红包记录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()

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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 获取。

本文同步分享在 博客“Python小二”(other)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

微信抢红包python脚本不用手机_用Python实现微信自动化抢红包,再也不用担心抢不到红包了...相关推荐

  1. python脚本运行命令_从Python脚本运行shell命令

    我正在尝试从 python脚本中运行一个shell命令,它需要做几件事 1. shell命令是'hspice tran.deck>! tran.lis' 2.在继续之前,脚本应该等待shell命 ...

  2. python脚本怎么使用_在Python中使用next()方法操作文件的教程

    next()方法当一个文件被用作迭代器,典型例子是在一个循环中被使用,next()方法被反复调用.此方法返回下一个输入行,或引发StopIteration异常EOF时被命中. 与其它文件的方法,如Re ...

  3. python实现抢劵_用Python实现微信自动化抢红包,再也不用担心抢不到红包了

    1. 概述 刚刚收到了两个消息,一个好消息,一个坏消息. 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 ... 过了一会, ...

  4. python远程控制电脑_只需一个python脚本就可远程控制电脑,打开微信即可远程遥控操作...

    原标题:只需一个python脚本就可远程控制电脑,打开微信即可远程遥控操作 今天带给大家一个非常有意思的 python 程序,基于 itchat 实现微信控制电脑.你可以通过在微信发送命令,来拍摄当前 ...

  5. python写手机脚本脱离电脑_在手机里编写python脚本控制手机

    今天我有一个大胆的想法,想在手机里面编写python脚本自动化控制手机.既然有了这么大胆而想法,而且我还能实现,那么就有了我现在这篇文章. 如何在手机里面编程 首先先介绍一款能直接在手机里面运行代码的 ...

  6. python手机版怎么运行项目或脚本-把Python脚本放到手机上定时运行

    毫无疑问,数据是数据分析的基础,而对于我等平民来说,获取大量数据的方式自然是通过爬虫采集,而对于笔者来说,写爬虫最自然的方式就是用Python写了.短短几行代码,就可以完成一个实用的爬虫,多清爽.(请 ...

  7. android微信朋友圈视频无法播放,微信朋友圈不能分享手机视频怎么回事?微信朋友圈大视频功能安卓不能用吗?...

    微信朋友圈不能分享手机视频怎么回事?微信朋友圈大视频功能安卓不能用吗?最近微信更新,用户可以进行分享自己手机里的视频,这一举措受到很多人的喜欢.那么微信朋友圈不能分享手机视频怎么回事?微信朋友圈大视频 ...

  8. 哪些软件是python编写出来的_用Python编程需要什么软件?

    用Python编程需要什么软件?Python编程是一门适合新手入门的编程语言,现在有不少程序员业余时间学习Python编程语言,学习Python找到好工具会大大提高学习的效率.好用的Python编程软 ...

  9. python实现自动化抢微信红包功能_【Python】用Python实现微信自动化抢红包,再也不用担心抢不到红包了...

    1. 概述 刚刚收到了两个消息,一个好消息,一个坏消息. 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 - 过了一会,内心 ...

最新文章

  1. error:CLEARTEXT communication to api.help.bj.cn not permitted by network security policy
  2. 用.NET创建Windows服务
  3. Java项目:朴素风个人博客系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
  4. rand和srand
  5. 正确入门Service Mesh:起源、发展和现状
  6. React 教程第六篇 —— 样式绑定
  7. 大家在寻找的高级程序员到底是什么样子的?
  8. FFMPEG的详细资料可以在它的官方网站上找到
  9. lineNumber: 1; columnNumber: 1; 前言中不允许有内容
  10. 实操来了!一文告诉你如何用 Streamlit 和 Heroku 开发 Web
  11. sqlachemy入门基础手册
  12. oracle 建表字段设置,Oracle创建表、删除表、修改表(添加字段、修改字段、删除字段)语句总结...
  13. 【SpringBoot】Logback日志框架介绍和SpringBoot整合实战
  14. The North American Invitational Programming Contest 2016 - Tourists ( LCA )
  15. MySQL的sql_mode解析设置
  16. 继承学习第一天 共有派生
  17. ARM裸机--看门狗定时器
  18. 关于谷歌浏览器全线崩溃的原因及几种解决办法(疑难杂症篇)
  19. 上传APP到AppStore遇到的各种错误
  20. C语言:编求阶乘函数

热门文章

  1. 【英语学习】【WOTD】horticulture 释义/词源/示例
  2. 【英语学习】【WOTD】decoct 释义/词源/示例
  3. Linux下的设计模式——委派模式(Delegate Pattern)深入浅出【建议新手收藏】
  4. C++虚函数表的总结
  5. 光线跟踪的几种常见求交运算
  6. php新闻列表排序,javascript 新闻列表排序简单封装
  7. iOS 图形编程总结
  8. 基于 FFMPEG 的音频编解码(二):音频解码
  9. docker如何安装vim和yum命令?
  10. CentOS6下docker的安装和使用