用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抓取网页正文的源码
Jun 11 Python
在Python中用split()方法分割字符串的使用介绍
May 20 Python
python中enumerate函数用法实例分析
May 20 Python
单利模式及python实现方式详解
Mar 20 Python
Python的numpy库中将矩阵转换为列表等函数的方法
Apr 04 Python
Python完成毫秒级抢淘宝大单功能
Jun 06 Python
Django中的FBV和CBV用法详解
Sep 15 Python
Python内置方法实现字符串的秘钥加解密(推荐)
Dec 09 Python
python 实现视频 图像帧提取
Dec 10 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
python如何输出反斜杠
Jun 18 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
Dec 07 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实现让页面只能被百度gogole蜘蛛访问的方法
2009/12/29 PHP
PHP多线程抓取网页实现代码
2010/07/22 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
JS日历 推荐
2006/12/03 Javascript
js 提交和设置表单的值
2008/12/19 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
JS实现兼容性较好的随屏滚动效果
2015/11/09 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
详谈js模块化规范
2017/07/07 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
Python中单例模式总结
2018/02/20 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
python实现FTP循环上传文件
2020/03/20 Python
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
两则小学生的自我评价分享
2013/11/14 职场文书
体育教育专业毕业生自荐信
2013/11/15 职场文书
办公室前台岗位职责
2014/01/04 职场文书
个人近期表现材料
2014/02/11 职场文书
股权投资意向书
2014/04/01 职场文书
工程材料采购方案
2014/05/18 职场文书
运动会广播稿100字
2015/08/19 职场文书
2016猴年春节问候语
2015/11/11 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
python爬虫请求库httpx和parsel解析库的使用测评
2021/05/10 Python
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis
Python天气语音播报小助手
2021/09/25 Python
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS