用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中利用Pandas库处理大数据的简单介绍
Apr 07 Python
Python中的元类编程入门指引
Apr 15 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
Jan 28 Python
python读写json文件的简单实现
Apr 11 Python
使用python为mysql实现restful接口
Jan 05 Python
使用Python实现微信提醒备忘录功能
Dec 04 Python
Python3 SSH远程连接服务器的方法示例
Dec 29 Python
解决python字典对值(值为列表)赋值出现重复的问题
Jan 20 Python
将Pytorch模型从CPU转换成GPU的实现方法
Aug 19 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
Dec 19 Python
python入门之基础语法学习笔记
Feb 08 Python
python读写数据读写csv文件(pandas用法)
Dec 14 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
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
在Windows XP下安装Apache+MySQL+PHP环境
2015/02/22 PHP
php解析xml 的四种简单方法(附实例)
2016/07/11 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
aspx中利用js实现确认删除代码
2010/07/22 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
JS数学函数Exp使用说明
2012/08/09 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
vue组件化中slot的基本使用方法
2019/05/01 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
PyQt5实现拖放功能
2018/04/25 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
什么是SCM(软件配置管理)
2014/08/16 面试题
数控技术专科生自我评价
2014/01/08 职场文书
网络工程师专家职业发展路线
2014/02/14 职场文书
决心书范文
2014/03/11 职场文书
课程改革实施方案
2014/03/16 职场文书
应届大专生自荐书
2014/06/16 职场文书
主持稿开场白
2015/06/01 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
vue实现简单数据双向绑定
2021/04/28 Vue.js
python中opencv实现图片文本倾斜校正
2021/06/11 Python
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis