春節(jié)來到,紅包們大概率在微信各大群中肆虐,大家是否都一樣不搶到紅包們心里就感覺錯過了一個億,可總會被這事那事耽誤而遺憾錯過,下面用 Python 寫一個自動搶紅包代碼
啟動入口
啟動程序的配置和公眾號文章《用 Python + Appium 的方式自動化清理微信僵尸好友》的配置一樣
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è)備版本號,在手機設(shè)置中查看
'appPackage': 'com.tencent.mm', # app 包名
'appActivity': 'com.tencent.mm.ui.LauncherUI', # app 啟動時主 Activity
'noReset': True # 是否保留 session 信息 避免重新登錄
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_capabilities)
# 設(shè)置等待超時時間
wait = WebDriverWait(driver, 60)
點擊進入聊天窗口
微信在一般情況下最新的聊天記錄將被放在第一個,所以只需要打開第一個聊天窗口檢查有沒有紅包就可以了,用 id 為 com.tencent.mm:id/e3x
可以找到所有的聊天信息,我們?nèi)〉谝粋€聊天群的索引
# 進入第一個聊天框
red_packet_group = driver.find_elements_by_id('com.tencent.mm:id/e3x')[0]
red_packet_group.click()
找到紅包
進入聊天群后,紅包圖片檢查是否存在紅包,它的 id 為 com.tencent.mm:id/r2
# 檢查紅包
reds = driver.find_elements_by_id('com.tencent.mm:id/r2')
if len(reds) == 0:
driver.keyevent(4)
搶紅包
點擊紅包后會出現(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)
打開紅包
打開紅包比較簡單,只需要找到 開
字的 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()
刪除紅包
最后我們將紅包刪除,防止紅包被重復打開。當長按紅包時,微信紅包會出現(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é)
這是學習并使用 Appium 的第三篇文章,Appium 可以將手機操作自動化,大家學廢了嗎?
到此這篇關(guān)于用60行代碼實現(xiàn)Python自動搶微信紅包的文章就介紹到這了,更多相關(guān)Python自動搶微信紅包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Python自動搶紅包教程詳解
- python生成隨機紅包的實例寫法
- Python實現(xiàn)的微信紅包提醒功能示例
- Python+PIL實現(xiàn)支付寶AR紅包
- python 實現(xiàn)紅包隨機生成算法的簡單實例
- python實現(xiàn)紅包裂變算法
- Python版微信紅包分配算法
- Python+Appium實現(xiàn)自動搶微信紅包