用60行代码实现Python自动抢微信红包


Posted in Python onFebruary 04, 2021

春节来到,红包们大概率在微信各大群中肆虐,大家是否都一样不抢到红包们心里就感觉错过了一个亿,可总会被这事那事耽误而遗憾错过,下面用 Python 写一个自动抢红包代码

用60行代码实现Python自动抢微信红包 

启动入口

启动程序的配置和公众号文章《用 Python + Appium 的方式自动化清理微信僵尸好友》的配置一样

from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from appium.webdriver.common.touch_action import TouchAction
from selenium.webdriver.support import expected_conditions as EC

desired_capabilities = {
    'platformName': 'Android', # 操作系统
    'deviceName': '2a254a02', # 设备 ID
    'platformVersion': '10.0.10', # 设备版本号,在手机设置中查看
    'appPackage': 'com.tencent.mm', # app 包名
    'appActivity': 'com.tencent.mm.ui.LauncherUI', # app 启动时主 Activity
    'noReset': True # 是否保留 session 信息 避免重新登录
}

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_capabilities)
# 设置等待超时时间
wait = WebDriverWait(driver, 60)

点击进入聊天窗口

微信在一般情况下最新的聊天记录将被放在第一个,所以只需要打开第一个聊天窗口检查有没有红包就可以了,用 id 为 com.tencent.mm:id/e3x 可以找到所有的聊天信息,我们取第一个聊天群的索引

用60行代码实现Python自动抢微信红包

# 进入第一个聊天框
red_packet_group = driver.find_elements_by_id('com.tencent.mm:id/e3x')[0]
red_packet_group.click()

找到红包

进入聊天群后,红包图片检查是否存在红包,它的 id 为 com.tencent.mm:id/r2

用60行代码实现Python自动抢微信红包

# 检查红包
reds = driver.find_elements_by_id('com.tencent.mm:id/r2')
if len(reds) == 0:
  driver.keyevent(4)

抢红包

点击红包后会出现以下 3 种情况

  • 红包已经被自己领取了
  • 红包手慢了没抢到
  • 红包未领取

前两种情况红包已经失效了,最后一种才是可以打开的红包

红包已经失效了

在上面代码中都是用 id 检查元素是否存在,这里使用查找文字已存入零钱手慢了判断红包是否已经失效

用60行代码实现Python自动抢微信红包

# 判断元素是否存在
def is_element_exist_by_xpath(driver, text):
    try:
        driver.find_element_by_xpath(text)
    except Exception as e:
        return False
    else:
        return True


# 领取了
is_open = is_element_exist_by_xpath(driver, '//android.widget.TextView[contains(@text, "已存入零钱")]')
# 没抢到
is_grabbed = is_element_exist_by_xpath(driver, '//android.widget.TextView[contains(@text, "手慢了")]')

if is_open or is_grabbed:
    driver.keyevent(4)

打开红包

打开红包比较简单,只需要找到  字的 id

用60行代码实现Python自动抢微信红包

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()

删除红包

最后我们将红包删除,防止红包被重复打开。当长按红包时,微信红包会出现删除按钮

用60行代码实现Python自动抢微信红包

TouchAction(driver).long_press(red).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()

总结

这是学习并使用 Appium 的第三篇文章,Appium 可以将手机操作自动化,大家学废了吗?

到此这篇关于用60行代码实现Python自动抢微信红包的文章就介绍到这了,更多相关Python自动抢微信红包内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python的print用法示例
Feb 11 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
TF-IDF算法解析与Python实现方法详解
Nov 16 Python
python机器学习之随机森林(七)
Mar 26 Python
对python中的for循环和range内置函数详解
Apr 17 Python
Python对切片命名的实现方法
Oct 16 Python
对Python w和w+权限的区别详解
Jan 23 Python
Python面向对象编程基础实例分析
Jan 17 Python
python设置环境变量的作用整理
Feb 17 Python
如何使用repr调试python程序
Feb 28 Python
python库skimage给灰度图像染色的方法示例
Apr 27 Python
python批量更改目录名/文件名的方法
Apr 18 Python
Python+Appium实现自动化清理微信僵尸好友的方法
Feb 04 #Python
python中操作文件的模块的方法总结
Feb 04 #Python
Python3利用openpyxl读写Excel文件的方法实例
Feb 03 #Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 #Python
python中time.ctime()实例用法
Feb 03 #Python
python中Array和DataFrame相互转换的实例讲解
Feb 03 #Python
利用Python过滤相似文本的简单方法示例
Feb 03 #Python
You might like
在同一窗体中使用PHP来处理多个提交任务
2008/05/08 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
jquery处理json数据实例分析
2014/06/03 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
vue2.0 datepicker使用方法
2018/02/04 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python操作列表的常用方法分享
2014/02/13 Python
Python中还原JavaScript的escape函数编码后字符串的方法
2014/08/22 Python
Python实现大文件排序的方法
2015/07/10 Python
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
2017/12/15 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
求职简历的自我评价
2014/01/31 职场文书
商业活动邀请函
2014/02/04 职场文书
3分钟演讲稿
2014/04/30 职场文书
数学教研活动总结
2014/07/02 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
介绍信格式
2015/01/30 职场文书
2015年党建工作汇报材料
2015/06/25 职场文书