用60行代碼實(shí)現(xiàn)Python自動(dòng)搶微信紅包
春節(jié)來到,紅包們大概率在微信各大群中肆虐,大家是否都一樣不搶到紅包們心里就感覺錯(cuò)過了一個(gè)億,可總會(huì)被這事那事耽誤而遺憾錯(cuò)過,下面用 Python 寫一個(gè)自動(dòng)搶紅包代碼
啟動(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()
總結(jié)
這是學(xué)習(xí)并使用 Appium 的第三篇文章,Appium 可以將手機(jī)操作自動(dòng)化,大家學(xué)廢了嗎?
到此這篇關(guān)于用60行代碼實(shí)現(xiàn)Python自動(dòng)搶微信紅包的文章就介紹到這了,更多相關(guān)Python自動(dòng)搶微信紅包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python利用matplotlib繪制圓環(huán)圖(環(huán)形圖)的實(shí)戰(zhàn)案例
環(huán)形圖也被稱為圓環(huán)圖,它在功能上與餅圖相同,只是中間有一個(gè)空白,并且能夠同時(shí)支持多個(gè)統(tǒng)計(jì)數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Python利用matplotlib繪制圓環(huán)圖的實(shí)戰(zhàn)案例,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08使用Python制作一個(gè)簡(jiǎn)易的遠(yuǎn)控終端
這篇文章主要為大家詳細(xì)介紹了如何使用Python語言制作一個(gè)簡(jiǎn)易的遠(yuǎn)控終端,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解一下2023-04-04windows下添加Python環(huán)境變量的方法匯總
默認(rèn)情況下,在windows下安裝python之后,系統(tǒng)并不會(huì)自動(dòng)添加相應(yīng)的環(huán)境變量。此時(shí)不能在命令行直接使用python命令。今天我們就來看下,如何簡(jiǎn)單快捷的在windows下添加Python環(huán)境變量2018-05-05keras實(shí)現(xiàn)圖像預(yù)處理并生成一個(gè)generator的案例
這篇文章主要介紹了keras實(shí)現(xiàn)圖像預(yù)處理并生成一個(gè)generator的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06解讀sqlalchemy的常用數(shù)據(jù)類型有哪些
這篇文章主要介紹了解讀sqlalchemy的常用數(shù)據(jù)類型有哪些,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03在服務(wù)器上運(yùn)行python文件詳細(xì)步驟
很多小伙伴想知道如何在服務(wù)器上跑python程序的方法,那么這篇文章主要給大家介紹了關(guān)于在服務(wù)器上運(yùn)行python文件的詳細(xì)步驟,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02