溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用Python怎么編寫一個(gè)自動(dòng)搶微信紅包功能

發(fā)布時(shí)間:2021-02-04 13:44:33 來源:億速云 閱讀:260 作者:Leah 欄目:開發(fā)技術(shù)

使用Python怎么編寫一個(gè)自動(dòng)搶微信紅包功能?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

啟動(dòng)入口

啟動(dòng)程序的配置和公眾號(hào)文章《用 Python + Appium 的方式自動(dòng)化清理微信僵尸好友》的配置一樣

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

desired_capabilities = {
    'platformName': 'Android', # 操作系統(tǒng)
    'deviceName': '2a254a02', # 設(shè)備 ID
    'platformVersion': '10.0.10', # 設(shè)備版本號(hào),在手機(jī)設(shè)置中查看
    'appPackage': 'com.tencent.mm', # app 包名
    'appActivity': 'com.tencent.mm.ui.LauncherUI', # app 啟動(dòng)時(shí)主 Activity
    'noReset': True # 是否保留 session 信息 避免重新登錄
}

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_capabilities)
# 設(shè)置等待超時(shí)時(shí)間
wait = WebDriverWait(driver, 60)

點(diǎn)擊進(jìn)入聊天窗口

微信在一般情況下最新的聊天記錄將被放在第一個(gè),所以只需要打開第一個(gè)聊天窗口檢查有沒有紅包就可以了,用 id 為 com.tencent.mm:id/e3x 可以找到所有的聊天信息,我們?nèi)〉谝粋€(gè)聊天群的索引# 進(jìn)入第一個(gè)聊天框

red_packet_group = driver.find_elements_by_id('com.tencent.mm:id/e3x')[0]
red_packet_group.click()

找到紅包

進(jìn)入聊天群后,紅包圖片檢查是否存在紅包,它的 id 為 com.tencent.mm:id/r2

 # 檢查紅包
reds = driver.find_elements_by_id('com.tencent.mm:id/r2')
if len(reds) == 0:
  driver.keyevent(4)

搶紅包

點(diǎn)擊紅包后會(huì)出現(xiàn)以下 3 種情況

  • 紅包已經(jīng)被自己領(lǐng)取了

  • 紅包手慢了沒搶到

  • 紅包未領(lǐng)取

前兩種情況紅包已經(jīng)失效了,最后一種才是可以打開的紅包

紅包已經(jīng)失效了

在上面代碼中都是用 id 檢查元素是否存在,這里使用查找文字已存入零錢手慢了判斷紅包是否已經(jīng)失效# 判斷元素是否存在

def is_element_exist_by_xpath(driver, text):
    try:
        driver.find_element_by_xpath(text)
    except Exception as e:
        return False
    else:
        return True


# 領(lǐng)取了
is_open = is_element_exist_by_xpath(driver, '//android.widget.TextView[contains(@text, "已存入零錢")]')
# 沒搶到
is_grabbed = is_element_exist_by_xpath(driver, '//android.widget.TextView[contains(@text, "手慢了")]')

if is_open or is_grabbed:
    driver.keyevent(4)

打開紅包

打開紅包比較簡(jiǎn)單,只需要找到  字的 id

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

刪除紅包

最后我們將紅包刪除,防止紅包被重復(fù)打開。當(dāng)長(zhǎng)按紅包時(shí),微信紅包會(huì)出現(xiàn)刪除按鈕

TouchAction(driver).long_press(red).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()

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI