五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

Python+Appium實(shí)現(xiàn)自動(dòng)搶微信紅包

發(fā)布日期:2022-04-26 14:42 | 文章來(lái)源:gibhub

環(huán)境準(zhǔn)備

  • appium環(huán)境
  • 安卓手機(jī)
  • usb數(shù)據(jù)線
  • python環(huán)境

實(shí)現(xiàn)思路

我們收到紅包和消息都是自動(dòng)置頂?shù)降谝粋€(gè),于是我們打開第一個(gè)判斷是否有紅包,沒有則隱藏此窗口。如果有則判斷紅包是否可以領(lǐng)取,如果有則領(lǐng)取紅包,否則刪除此紅包(不然會(huì)影響后面的判斷)
然后再進(jìn)行循環(huán)運(yùn)行和判斷。

code

首先看一下配置信息,因?yàn)槲沂褂玫檬钦鏅C(jī)小米9安卓10的系統(tǒng),代碼實(shí)現(xiàn)如下具體的信息填寫請(qǐng)根據(jù)自己的真實(shí)情況修改:

desired_caps = {
 "platformName": "Android",  # 系統(tǒng)
 "platformVersion": "10.0",  # 系統(tǒng)版本號(hào)
 "deviceName": "b68548ed",  # 設(shè)備名
 "appPackage": "com.tencent.mm",  # 包名
 "appActivity": ".ui.LauncherUI",  # app 啟動(dòng)時(shí)主 Activity
 'unicodeKeyboard': True,  # 使用自帶輸入法
 'noReset': True  # 保留 session 信息,可以避免重新登錄
}

因?yàn)辄c(diǎn)擊紅包后需要判斷點(diǎn)擊后的紅包是否被領(lǐng)取,即是否有開字,如圖所示:

所以我們定義一個(gè)判斷元素是否存在的方法,代碼實(shí)現(xiàn)如下:

def is_element_exist(driver, by, value):
 try:
  driver.find_element(by=by, value=value)
 except Exception as e:
  return False
 else:
  return True

因?yàn)榧t包無(wú)論是被自己領(lǐng)取還是被他人領(lǐng)取,之后都要?jiǎng)h除領(lǐng)取后的紅包記錄,所以我們?cè)賮?lái)定義一個(gè)刪除已領(lǐng)取紅包的方法,代碼實(shí)現(xiàn)如下:

def del_red_envelope(wait, driver):
 # 長(zhǎng)按領(lǐng)取過的紅包
 r8 = wait.until(EC.element_to_be_clickable(
  (By.ID, "com.tencent.mm:id/ahs")))
 TouchAction(driver).long_press(r8).perform()
 time.sleep(1)
 # 點(diǎn)擊長(zhǎng)按后顯示的刪除
 wait.until(EC.element_to_be_clickable(
  (By.ID, "com.tencent.mm:id/dt5"))).click()
 # 點(diǎn)擊彈出框的刪除選項(xiàng)
 wait.until(EC.element_to_be_clickable(
  (By.ID, "com.tencent.mm:id/ffp"))).click()

同時(shí)有可能第一個(gè)是公眾號(hào)推送的消息,這樣會(huì)導(dǎo)致無(wú)法判斷,所以我們判斷只要進(jìn)去的里面沒有紅包就把它隱藏掉,然后等新的紅包發(fā)生過來(lái)。

# 刪除第一個(gè)聊天框
def del_red_public(wait, driver):
 # 長(zhǎng)按第一個(gè)聊天框
 r8 = wait.until(EC.element_to_be_clickable(
  (By.ID, "com.tencent.mm:id/fzg")))
 TouchAction(driver).long_press(r8).perform()
 time.sleep(1)
 # 點(diǎn)擊長(zhǎng)按后顯示的刪除
 wait.until(EC.element_to_be_clickable((By.XPATH, "http://android.widget.TextView[@text='不顯示該聊天']"))).click()
 # 點(diǎn)擊彈出框的刪除選項(xiàng)
 wait.until(EC.element_to_be_clickable(
  (By.ID, "com.tencent.mm:id/ffp"))).click()

完整代碼如下:

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
import time
desired_caps = {
 "platformName": "Android",  # 系統(tǒng)
 "platformVersion": "10.0",  # 系統(tǒng)版本號(hào)
 "deviceName": "b68548ed",  # 設(shè)備名
 "appPackage": "com.tencent.mm",  # 包名
 "appActivity": ".ui.LauncherUI",  # app 啟動(dòng)時(shí)主 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
# 刪除領(lǐng)取后的紅包記錄

def del_red_envelope(wait, driver):
 # 長(zhǎng)按領(lǐng)取過的紅包
 r8 = wait.until(EC.element_to_be_clickable(
  (By.ID, "com.tencent.mm:id/ahs")))
 TouchAction(driver).long_press(r8).perform()
 time.sleep(1)
 # 點(diǎn)擊長(zhǎng)按后顯示的刪除
 wait.until(EC.element_to_be_clickable(
  (By.ID, "com.tencent.mm:id/dt5"))).click()
 # 點(diǎn)擊彈出框的刪除選項(xiàng)
 wait.until(EC.element_to_be_clickable(
  (By.ID, "com.tencent.mm:id/ffp"))).click()

# 刪除第一個(gè)聊天框
def del_red_public(wait, driver):
 # 長(zhǎng)按第一個(gè)聊天框
 r8 = wait.until(EC.element_to_be_clickable(
  (By.ID, "com.tencent.mm:id/fzg")))
 TouchAction(driver).long_press(r8).perform()
 time.sleep(1)
 # 點(diǎn)擊長(zhǎng)按后顯示的刪除
 wait.until(EC.element_to_be_clickable((By.XPATH, "http://android.widget.TextView[@text='不顯示該聊天']"))).click()
 # 點(diǎn)擊彈出框的刪除選項(xiàng)
 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)
 # 設(shè)置等待
 wait = WebDriverWait(driver, 500)
 while True:
 # 進(jìn)入第一個(gè)聊天窗口
  g73 = wait.until(EC.element_to_be_clickable(
(By.ID, "com.tencent.mm:id/fzg")))
  g73.click()
  print("進(jìn)入了第一個(gè)聊天窗口")
  # 判斷聊天窗是否是公眾號(hào)
  is_weichat = is_element_exist(driver, "id", "com.tencent.mm:id/u1")
  if is_weichat == True:
  # while True:
# 有紅包則點(diǎn)擊
wait.until(EC.element_to_be_clickable(
 (By.ID, "com.tencent.mm:id/u1"))).click()
print("點(diǎn)擊了紅包")
# 判斷紅包是否被領(lǐng)取
is_open = is_element_exist(driver, "id", "com.tencent.mm:id/f4f")
print("紅包是否被領(lǐng)?。?, is_open)
if is_open == True:
 # 紅包未被領(lǐng)取,點(diǎn)擊開紅包
 wait.until(EC.element_to_be_clickable(
  (By.ID, "com.tencent.mm:id/f4f"))).click()
 print('已經(jīng)領(lǐng)取紅包')
 # 返回群聊
 driver.keyevent(4)
 # 刪除領(lǐng)取過的紅包記錄
 del_red_envelope(wait, driver)
 print('···刪除已經(jīng)領(lǐng)取的紅包,等待新的紅包')
 driver.keyevent(4)
else:
 # 返回群聊
 driver.keyevent(4)
 # 刪除領(lǐng)取過的紅包記錄
 del_red_envelope(wait, driver)
 print('···刪除無(wú)法領(lǐng)取的紅包,等待新的紅包')
 driver.keyevent(4)
  else:
print('沒有紅包則隱藏此聊天框')
# 返回群聊
driver.keyevent(4)
# 刪除第一個(gè)公眾號(hào)窗口
del_red_public(wait, driver)
print('隱藏了第一個(gè)聊天框')

以上就是Python+Appium實(shí)現(xiàn)自動(dòng)搶微信紅包的詳細(xì)內(nèi)容,更多關(guān)于Python 搶微信紅包的資料請(qǐng)關(guān)注本站其它相關(guān)文章!

香港服務(wù)器租用

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對(duì)1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部