当前位置:
首页 > temp > python入门教程 >
-
当我用Python写了一个自动抢红包工具后,过年没有人抢的过我
正文
现在捋一下思路,微信群发红包的基本情况是:每一次发红包都会与上一次有一些时间间隔,实现自动化抢红包的基本思路如下:
-
手动清空之前微信群中的红包记录
-
执行自动化抢红包程序,进入发红包的微信群(可以暂时将其顶置),循环检测群中是否有红包,发现红包则点击红包
-
检测红包是否被领取(判断点击后的红包是否出现开字),如果红包未被领取,则点击开字领取红包,再返回群聊界面删除已被领取的红包记录;如果红包已被领取,则返回群聊界面删除已被领取的红包记录,之后以此类推
环境准备
本文主要环境如下
-
Win7
-
小米5s
-
Python3.7
-
Appium1.5
-
微信7.0.20
代码实现
接下来我们开始手动敲代码,下面一起来看一下具体实现。
首先看一下配置信息,代码实现如下:
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 False else: 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: # 有红包则点击 # 现在不是都放假了,所以给大家准备了几百本Python的PDF电子书,什么类型都有。 # 还有Python的视频教程、源码等等,直接在这个Python学习交流q裙:872937351 自取就好了。 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)
好了,今天的分享到这里就结束了, 兄弟们快去试试吧!
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数