广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python+Appium实现自动抢微信红包的方法
  • 355
分享到

Python+Appium实现自动抢微信红包的方法

2023-06-15 04:06:04 355人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章将为大家详细讲解有关python+Appium实现自动抢微信红包的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。环境准备appium环境安卓手机usb数据线Python环境实现思路我们收到红包

这篇文章将为大家详细讲解有关python+Appium实现自动抢微信红包的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

环境准备

  • appium环境

  • 安卓手机

  • usb数据线

  • Python环境

实现思路

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

Python+Appium实现自动抢微信红包的方法

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 信息,可以避免重新登录}

因为点击红包后需要判断点击后的红包是否被领取,即是否有开字,如图所示:

Python+Appium实现自动抢微信红包的方法

所以我们定义一个判断元素是否存在的方法,代码实现如下:

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()

Python+Appium实现自动抢微信红包的方法

同时有可能第一个是公众号推送的消息,这样会导致无法判断,所以我们判断只要进去的里面没有红包就把它隐藏掉,然后等新的红包发生过来。

# 删除第一个聊天框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 WEBdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom appium.webdriver.common.touch_action import TouchActionfrom selenium.webdriver.support import expected_conditions as ECimport timedesired_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的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞明白语言本身。2.面向对象,与其他主要的语言如c++和Java相比, Python以一种非常强大又简单的方式实现面向对象编程。3.可移植性,Python程序无需修改就可以在各种平台上运行。4.解释性,Python语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。5.开源,Python是 FLOSS(自由/开放源码软件)之一。

关于“Python+Appium实现自动抢微信红包的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Python+Appium实现自动抢微信红包的方法

本文链接: https://www.lsjlt.com/news/277611.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作