python自动抢_Python+Appium实现自动抢微信红包
前言
过年的时候总是少不了红包,不知从何时开始微信红包横空出世,对于网速和手速慢的人只能在一旁观望,做为python的学习者就是要运用编程解决生活和工作上的事情。
于是我用python解决我们的手速问题python实现自动抢微信红包,至于网速慢得那就只能自己花钱提升了。
环境准备
appium环境
安卓手机
usb数据线
python环境
实现思路
我们收到红包和消息都是自动置顶到第一个,于是我们打开第一个判断是否有红包,没有则隐藏此窗口。如果有则判断红包是否可以领取,如果有则领取红包,否则删除此红包(不然会影响后面的判断)
然后再进行循环运行和判断。
CODE
首先看一下配置信息,因为我使用得是真机小米9安卓10的系统,代码实现如下具体的信息填写请根据自己的真实情况修改:
desired_caps = {
"platformName": "Android", # 系统
"platformVersion": "10.0", # 系统版本号
"deviceName": "b68548ed", # 设备名
"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/ahs")))
TouchAction(driver).long_press(r8).perform()
time.sleep(1)
# 点击长按后显示的删除
wait.until(EC.element_to_be_clickable(
(By.ID, "com.tencent.mm:id/dt5"))).click()
# 点击弹出框的删除选项
wait.until(EC.element_to_be_clickable(
(By.ID, "com.tencent.mm:id/ffp"))).click()
同时有可能第一个是公众号推送的消息,这样会导致无法判断,所以我们判断只要进去的里面没有红包就把它隐藏掉,然后等新的红包发生过来。
# 删除第一个聊天框
def del_red_public(wait, driver):
# 长按第一个聊天框
r8 = wait.until(EC.element_to_be_clickable(
(By.ID, "com.tencent.mm:id/fzg")))
TouchAction(driver).long_press(r8).perform()
time.sleep(1)
# 点击长按后显示的删除
wait.until(EC.element_to_be_clickable((By.XPATH, "//android.widget.TextView[@text='不显示该聊天']"))).click()
# 点击弹出框的删除选项
wait.until(EC.element_to_be_clickable(
(By.ID, "com.tencent.mm:id/ffp"))).click()
完整代码如下:
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
import time
desired_caps = {
"platformName": "Android", # 系统
"platformVersion": "10.0", # 系统版本号
"deviceName": "b68548ed", # 设备名
"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/ahs")))
TouchAction(driver).long_press(r8).perform()
time.sleep(1)
# 点击长按后显示的删除
wait.until(EC.element_to_be_clickable(
(By.ID, "com.tencent.mm:id/dt5"))).click()
# 点击弹出框的删除选项
wait.until(EC.element_to_be_clickable(
(By.ID, "com.tencent.mm:id/ffp"))).click()
# 删除第一个聊天框
def del_red_public(wait, driver):
# 长按第一个聊天框
r8 = wait.until(EC.element_to_be_clickable(
(By.ID, "com.tencent.mm:id/fzg")))
TouchAction(driver).long_press(r8).perform()
time.sleep(1)
# 点击长按后显示的删除
wait.until(EC.element_to_be_clickable((By.XPATH, "//android.widget.TextView[@text='不显示该聊天']"))).click()
# 点击弹出框的删除选项
wait.until(EC.element_to_be_clickable(
(By.ID, "com.tencent.mm:id/ffp"))).click()
if __name__ == '__main__':
driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)
# 设置等待
wait = WebDriverWait(driver, 500)
while True:
# 进入第一个聊天窗口
g73 = wait.until(EC.element_to_be_clickable(
(By.ID, "com.tencent.mm:id/fzg")))
g73.click()
print("进入了第一个聊天窗口")
# 判断聊天窗是否是公众号
is_weichat = is_element_exist(driver, "id", "com.tencent.mm:id/u1")
if is_weichat == True:
# while True:
# 有红包则点击
wait.until(EC.element_to_be_clickable(
(By.ID, "com.tencent.mm:id/u1"))).click()
print("点击了红包")
# 判断红包是否被领取
is_open = is_element_exist(driver, "id", "com.tencent.mm:id/f4f")
print("红包是否被领取:", is_open)
if is_open == True:
# 红包未被领取,点击开红包
wait.until(EC.element_to_be_clickable(
(By.ID, "com.tencent.mm:id/f4f"))).click()
print('已经领取红包')
# 返回群聊
driver.keyevent(4)
# 删除领取过的红包记录
del_red_envelope(wait, driver)
print('···删除已经领取的红包,等待新的红包')
driver.keyevent(4)
else:
# 返回群聊
driver.keyevent(4)
# 删除领取过的红包记录
del_red_envelope(wait, driver)
print('···删除无法领取的红包,等待新的红包')
driver.keyevent(4)
else:
print('没有红包则隐藏此聊天框')
# 返回群聊
driver.keyevent(4)
# 删除第一个公众号窗口
del_red_public(wait, driver)
print('隐藏了第一个聊天框')
此程序可能会清空你得微信聊天对话窗口,对内容消息敏感得请谨慎运行。
python自动抢_Python+Appium实现自动抢微信红包相关推荐
- python实现自动工作_python实现串口自动触发工作的示例
最近在一个python工具中需要实现串口自动触发工作的功能,之前只在winform上面实现,今天使用python试试.这里简单记一下: 首先用wxpython实现一个Button,点击事件绑定函数On ...
- python 文案自动生成_Python自动化测试如何自动生成测试用例?
原文作者:陈安妮annie1 原出处:简书 上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰,我们将立即处理. 传统的测试用例需要测试或者开发人员将用户的操作用代码表示出来,通过断言判断 ...
- python积分管理系统_python实现每天自动签到领积分的示例代码
自动签到的python脚本源码 新建一个python文件,checkin.py,保存到电脑上某个位置,我这里保存到的是E:\pyproject\checkin.py # 引入3个包 from sele ...
- python animation 轨迹_Python实例:自动轨迹绘制
1. 问题分析 需求:根据脚本来绘制图形 Python的 turtle 库通过写代码的方式来绘图,现在我们要根据数据来绘制轨迹. 使用数据脚本时自动化最重要的第一步.例如,根据下面的几组数据绘制出的图 ...
- python校园网登录_python实现校园网自动登录的示例讲解
python实现校园网自动登录的示例讲解 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: python实现校园网自动登录的示例讲解.txt ] (友情提示:右键点上 ...
- python延时函数_Python实现屏幕自动截图
教程目录 需要实现的功能:自动屏幕截图 具体需求: 1. 支持设置截图频率和截图文件存储路径 2. 在存储截图时判断与前一张截图的相似度,只有屏幕发生了显著的变化才存储截图 所需技术(搜索关键词): ...
- python论坛签到_python实现网页自动签到功能
本文实例为大家分享了python实现网页自动签到功能的具体代码,供大家参考,具体内容如下 第1步.环境准备(用的chrome浏览器) 1.安装selenium包 pip install seleniu ...
- python 自动点赞_Python实现QQ自动点赞
用Python做一个QQ自动点赞神器,上代码: 1 def QQZan(qq): 2 browser = webdriver.Chrome() 3 browser.maximize_window() ...
- python实现qq自动点赞_Python实现QQ自动点赞
用python做一个QQ自动点赞神器,上代码: 1 def QQZan(qq): 2 browser = webdriver.chrome() 3 browser.maximize_window() ...
最新文章
- 关于android设备唯一区分device id的取得
- 30年前过气老论文,为何能催生革命全球的CNN框架?
- 最简单的方式实现QML无边框窗口边缘拖动调整大小
- Tiniux 3.0 / Memory.c / OSMemInit
- 洛谷P1462 通往奥格瑞玛的道路 二分答案+最短路SPFA
- 去哪儿对垒携程 在线旅游静悄悄的革命
- http://Live.GIGA.NET.TW/FM917/
- 文件权限管理命令chmod,chown与文本搜索命令grep
- .net微信公众号开发——群发消息
- amazon sqs java_Amazon SQS消息多传递
- 服装尺寸 html,服装尺寸S、M、L、XL、XXL分别表示的型号大小和释义(完整版)...
- Keil V5.37.0.0 - 按 F12 无法跳转到定义
- 论文翻译 | TOOD:《TOOD: Task-aligned One-stage Object Detection》详细解读
- 高并发系统--限流算法
- 其实特简单,Python 做一个漂亮女孩词云跳舞的视频
- 考研VS就业——选一条适合自己的路(大学三年的感悟)
- wangeditor 两个editor失焦解决办法
- 微机原理与接口技术 学习笔记(五) 8255(可编程并行接口芯片) 与 8253(可编程定时/计数器)
- 【HTML】图像标签、文本、表格的颜色及其背景色
- mysql 如何获取当前时间 前、后一小时的时间?