前言

过年的时候总是少不了红包,不知从何时开始微信红包横空出世,对于网速和手速慢的人只能在一旁观望,做为python的学习者就是要运用编程解决生活和工作上的事情。

于是我用python解决我们的手速问题python实现自动抢微信红包,至于网速慢得那就只能自己花钱提升了。

环境准备

appium环境

安卓手机

usb数据线

python环境

实现思路

我们收到红包和消息都是自动置顶到第一个,于是我们打开第一个判断是否有红包,没有则隐藏此窗口。如果有则判断红包是否可以领取,如果有则领取红包,否则删除此红包(不然会影响后面的判断)

然后再进行循环运行和判断。

CODE

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+Appium实现自动抢微信红包的更多相关文章

  1. Android通过辅助功能实现抢微信红包原理简单介绍

    简书文章:https://www.jianshu.com/p/e1099a94b979 附抢红包开源项目地址,代码已全改为Kotlin了,已适配到最新微信7.0.5版本,如果对你有所帮助赏个star吧 ...

  2. linux base脚本编写-自动领取微信红包

    bash脚本编写 语法 变量 定义: your_name = "ABC" 使用: echo $your_name 只读变量 a = "123" readonly ...

  3. python+selenium实现自动抢票

    使用说明 程序运行开始,需要输入出发地,目的地,出发时间,乘客信息,车次:乘客信息和车次可以输入多个 刚刚开始学习爬虫,selenium仅仅是解放了双手,运行效率不是很高: 程序运行时会打开chrom ...

  4. 快过年了,如何使用 AutoJS 自动化快速抢微信红包!

    快过年了,群里一般会充斥着各种红包,你抢红包的手速怎么样呢?AutoJS 是一款 Android 端的应用软件,它可以基于无障碍服务主动或基于任务,完成一系列自动化操作 官网:https://pro. ...

  5. 薅羊毛? 月入10万? | 这是自动化测试老司机的特长--Python自动化带你薅视频红包,一个都不放过!

    一.目标场景 如今短视频横行的时代,以某短视频为首的,背后依靠着强大的资金后盾,疯狂地对平台用户进行红包轰炸. ​ 与传统的红包不一样,视频红包包含位置的不确定性.大小不确定性.元素 ID 的不确定性 ...

  6. 微信红包中使用的技术:AA收款+随机算法

    除夕夜你领到红包了吗?有的说“我领了好几K!”“我领了几W!” 土豪何其多,苦逼也不少!有的说“我出来工作了,没压岁钱了,还要发红包”.那您有去抢微信红包吗?微信群中抢“新年红包”春节爆红.618微信 ...

  7. Python自动抢红包,超详细教程,再也不会错过微信红包了!

    目录: 0 引言 1 环境 2 需求分析 3 前置准备 4 抢红包流程回顾 5 代码梳理 6 后记 0 引言 提到抢红包,就不得不提Xposed框架,它简直是个抢红包的神器,但使用Xposed框架有一 ...

  8. Python微信红包算法

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  9. python 微信红包

    def redbags(money, num=10): import random choice = random.sample(range(1, money * 100), num - 1) cho ...

随机推荐

  1. 【Oracle】row_number() over(partition by )函数用法

    row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编 ...

  2. oracle绑定变量测试及性能对比

    1.创建测试数据 2.查看cursor_sharing的值 SQL> show parameter cursor_sharing; NAME TYPE VALUE --------------- ...

  3. Jquery实现对Array数组实现类似Linq的Lambda表达式的Where方法筛选

    平时使用Linq,习惯了Lambda表达式,用着非常顺手,奈何在Jquery里面不能这样用,只能循环一个个判断.趁空闲时间找了找,自己写了这样的扩展方法.目前写出了三种方案,没有比较性能,觉得都可以用 ...

  4. D2Admin 登录用户重新初始话右侧菜单

    背景 最近用到D2Admin开发项目,用户登录菜单要根据用户角色权限获取,但是又不想用官网的方案(vue基于d2-admin的RBAC权限管理解决方案),所以自己加了个只修改 menuAside的方案 ...

  5. 全网最全!彻底弄透Java处理GMT/UTC日期时间

    目录 前言 本文提纲 版本约定 正文 Date类型实现 时区/偏移量TimeZone 设置默认时区 让人恼火的夏令时 Date时区无关性 读取字符串为Date类型 SimpleDateFormat格式 ...

  6. git创建分支并关联远程分支

    1.新建本地分支: 如图,再输入你的分支名字,然后选择从哪个远程分支拉代码,如选择master 至此本地分支创建完成. 2.关联远程分支: (1).先输入git branch -vv,看看分支与远程分 ...

  7. 求得二叉搜索树的第k小的元素

    求得二叉搜索树的第k小的元素 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 须知:二叉搜索树,又叫二叉排序树,二叉查找树.特点是:左子树的所有元素都小于等 ...

  8. 从零开始学spring源码之xml解析(二):默认标签和自定义标签解析

    默认标签: 上一篇说到spring的默认标签和自定义标签,发现这里面东西还蛮多的.决定还是拆开来写.今天就来好好聊聊这两块是怎么玩的,首先我们先看看默认标签: private void parseDe ...

  9. Failed to start ssh.service: Unit not found.

    Failed to start ssh.service: Unit not found. 报错内容: [Centos7@localhost ~]$ service ssh start Redirect ...

  10. RVA与FOA的转换

    主要取决于文件对齐与内存对齐的值