1 概述
我刚刚收到两条消息,一则好消息,一则坏消息。
我们先来说说好消息。 好消息是微信群里有人要发红包。 快乐~
但转念一想,前几次都没拿到红包,这一次? ? ? 我不自觉地叹了口气……
过了一会儿,我内心的情绪渐渐平静下来。
我心想:“难道就这样放弃了吗?晚餐还要吃方便面吗(方便面让我觉得被冒犯了)?但是没有办法手动去抓,毕竟没有什么。” “谁都可以做!那我只能试试编程能不能做到。自动化抢红包的方式!”
现在我们想一想。 微信群发红包的基本情况是:每次发红包,与上次都会有一定的时间间隔。 自动化抢红包的基本思路如下:
2. 环境
本文主要环境如下:
如果您对环境搭建不熟悉,可以微信扫描下方CSDN官方认证二维码加入交流学习
交换问题并互相帮助。 这里有很好的学习教程和开发工具。
3. 实施
接下来,我们开始手动输入代码。 我们来看看具体的实现。
首先看一下配置信息。 代码实现如下:
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: # 有红包则点击 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)
终于
如果您在学习中遇到困难,可以微信扫描下方CSDN官方认证二维码加入交流学习
交换问题并互相帮助。 这里有很好的学习教程和开发工具。
【【CSDN礼包:《安装包&全套学习资料》免费分享】】(安全链接,放心点击)
1.全方位学习路线
将各个方向的技术点进行整理,形成各个领域的知识点总结。 它的用处在于你可以根据以上知识点找到对应的学习资源,保证你学得更全面。
2. 必备的开发工具
4. 视频收藏
观看零基础学习视频。 看视频是最快、最有效的学习方式。 跟着视频里老师的思路,从基础到深入,很容易上手。
5. 实际案例
光学理论是没有用的。 你必须学会遵循和实践,才能将所学到的知识运用到实践中。 这个时候,你可以通过一些实际案例来学习。
6. 练习
检查学习成果。
7. 面试材料
我们必须学习才能找到一份高薪工作。 以下面试题均来自阿里巴巴、腾讯、字节跳动等一线互联网公司的最新面试资料,阿里巴巴老总们都给出了权威答案。 完成这组面试后相信大家都能找到一份满意的工作。
最后,永远不要辜负当时的热情,一起变得更强、更好。