用60行代碼實現Python自動搶微信紅包
春節來到,紅包們大概率在微信各大群中肆虐,大傢是否都一樣不搶到紅包們心裡就感覺錯過瞭一個億,可總會被這事那事耽誤而遺憾錯過,下面用 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', # 操作系統 'deviceName': '2a254a02', # 設備 ID 'platformVersion': '10.0.10', # 設備版本號,在手機設置中查看 '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) # 設置等待超時時間 wait = WebDriverWait(driver, 60)
點擊進入聊天窗口
微信在一般情況下最新的聊天記錄將被放在第一個,所以隻需要打開第一個聊天窗口檢查有沒有紅包就可以瞭,用 id 為 com.tencent.mm:id/e3x
可以找到所有的聊天信息,我們取第一個聊天群的索引
# 進入第一個聊天框 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)
搶紅包
點擊紅包後會出現以下 3 種情況
- 紅包已經被自己領取瞭
- 紅包手慢瞭沒搶到
- 紅包未領取
前兩種情況紅包已經失效瞭,最後一種才是可以打開的紅包
紅包已經失效瞭
在上面代碼中都是用 id 檢查元素是否存在,這裡使用查找文字已存入零錢
和手慢瞭
判斷紅包是否已經失效
# 判斷元素是否存在 def is_element_exist_by_xpath(driver, text): try: driver.find_element_by_xpath(text) except Exception as e: return False else: return True # 領取瞭 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()
刪除紅包
最後我們將紅包刪除,防止紅包被重復打開。當長按紅包時,微信紅包會出現刪除按鈕
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()
總結
這是學習並使用 Appium 的第三篇文章,Appium 可以將手機操作自動化,大傢學廢瞭嗎?
到此這篇關於用60行代碼實現Python自動搶微信紅包的文章就介紹到這瞭,更多相關Python自動搶微信紅包內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python+Appium實現自動搶微信紅包
- Python+Appium實現自動化清理微信僵屍好友的方法
- 使用Python+Appuim 清理微信的方法
- Python編程使用Selenium模擬淘寶登錄實現過程
- python實現selenium網絡爬蟲的方法小結