91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python自動搶紅包教程詳解

發布時間:2020-10-20 16:37:37 來源:腳本之家 閱讀:242 作者:laozhang 欄目:開發技術

Python自動搶紅包教程詳解

0 引言

提到搶紅包,就不得不提Xposed框架,它簡直是個搶紅包的神器,但使用Xposed框架有一個前提條件:手機需要root,對于蘋果手機的話就需要越獄了。現在的手機想要root或越獄并不容易,同時這會對手機安全性帶來一些風險,搶紅包本身只是個娛樂活動,這樣做就得不償失了。

為了自動搶紅包,python能幫我們實現嗎?

答案是肯定的,本文就帶大家一起探索下用Python如何實現自動搶紅包。

1 環境

操作系統:Windows

Python版本:3.7.2

手機系統:Android

2 需求分析

這里我們的需求是實現自動搶紅包。首先要打開微信,進入到指定的群聊,識別微信紅包、執行搶紅包的動作。這就是關鍵的步驟,簡單清晰。

因為電腦版本的微信沒有搶紅包的功能,我們只能手機微信,那么就需要把手機連上電腦,通過電腦控制手機來自動搶,那就需要確保「adb」命令可正常執行。

識別微信中的消息,是紅包還是普通的信息,這里我們通過聊天消息的元素標識來判斷。這里我們借助了「Airtest IDE」工具來實現。

3 前置準備

3.1 打開手機的USB調試
要正常使用「adb」需要打開USB調試,設置項通常出現在手機系統設置中的[開發人員選項]里面。

Python自動搶紅包教程詳解

在手機上打開USB調試后,接下來我們通過Airttest IDE驗證 adb 運行是否正常。

3.2 下載安裝Airtest IDE
開始之前先,先解釋下airttest相關概念:

Airtest 是一個跨平臺的、基于圖像識別的UI自動化測試框架,適用于游戲和App,支持平臺有Windows、Android和iOS。

Poco是一款基于UI控件識別的自動化測試框架,目前支持Unity3D/cocos2dx-*/Android原生app/iOS原生app/微信小程序,也可以在其他引擎中自行接入poco-sdk來使用。

AirtestIDE 是一個我們配套推出的跨平臺的UI自動化測試編輯器,內置了Airtest和Poco的相關插件功能,能夠使用它快速簡單地編寫腳本。

Airtest IDE 的下載地址:http://airtest.netease.com/

下載之后,解壓打開就可以使用,Airtest IDE的界面如下:

Python自動搶紅包教程詳解

使用AirtestIDE對Android應用進行自動化操作,第一步就需要連接Android設備。

請使用USB線連接手機,手機上出現的 允許USB調試 彈窗,點擊 確定。

  • 點擊連接面板中的 refresh ADB 按鈕,設備列表將會刷新。
  • 點擊列表內對應設備的 Connect 完成連接。
  • 若設備未刷出,點擊 refresh ADB 按鈕。

Python自動搶紅包教程詳解

若連接遇到問題,請參考Airtest的官方教程:Android真機連接

4 搶紅包流程回顧

打開微信,在最左側的Tab頁,微信消息列表,我們需要從這里選擇指定的群聊來搶紅包。

在AirtestIDE中,我們可以通過暫停功能,凍結當前的UI樹形結構來精確地檢視UI控件,我們先來分析下這個頁面中元素標識。

Python自動搶紅包教程詳解

▲聊天頁面中整體的群聊消息的元素標識 com.tencent.mm:id/d1v

Python自動搶紅包教程詳解

▲聊天頁面中單個群聊消息的元素標識 com.tencent.mm:id/b6e

接下來進入我們準備要搶紅包的群聊中,識別出紅包并執行搶紅包的動作。

我們先來看看紅包的標識:

Python自動搶紅包教程詳解

▲紅包標識的示例1 com.tencent.mm:id/aql

Python自動搶紅包教程詳解

▲紅包標識的示例2 com.tencent.mm:id/aql

點擊紅包,記錄下彈出的大紅包頁面中“開”的元素標識

Python自動搶紅包教程詳解

▲大紅包頁面中”開“的標識 com.tencent.mm:id/d02

這里我們需要判斷是紅包是否有效,比如已被領完或是已被自己領取的紅包就是無效的,我們在執行時可以跳過這些。

Python自動搶紅包教程詳解

▲已領取紅包的標識 com.tencent.mm:id/apk

Python自動搶紅包教程詳解

▲已被領完紅包的標識 com.tencent.mm:id/apk

我們用的各元素的標識都已取到,接下來就是組織我們的代碼。

5 代碼梳理

首先得打開微信,利用Airtest啟動app應用,只須一行代碼即可搞定,如下

# 打開手機微信
poco(text='微信').click()

獲取當前頁面中所有所有群聊的名稱

# 群聊消息的元素標識
Chat_msg = poco(name='com.tencent.mm:id/d1v').offspring('com.tencent.mm:id/b6e')
# 獲取當前頁面中所有群聊的名稱
Chat_names = []
Chat_names = list(map(lambda x: x.get_text(), Chat_msg))

選擇并進入指定的群聊

# 指定搶紅包的群聊名稱
chat = input('請指定群聊名稱:')
if chat in Chat_names:
 index = Chat_names.index(chat)
 # 點擊進入指定的群聊
 Chat_msg[index].click()
在微信聊天頁面中,獲取當前頁面中的所有消息元素。

msg_list = poco("android.widget.ListView").children()

遍歷消息并查找紅包

for msg in msg_list:
 # 微信紅包的標識
 LuckyMoney = msg.offspring('com.tencent.mm:id/aql')
 # 已失效紅包(比如已領取、已被領完)的標識
 Invalid = msg.offspring('com.tencent.mm:id/aqk')

 # 判斷紅包是否有效并搶起來!
 if LuckyMoney:
 pass

在LuckyMoney中定義搶紅包的動作

if Invalid.exists() and (Invalid.get_text()=='已領取' or Invalid.get_text()=='已被領完'):
 print(f'紅包已無效,跳過……')
 continue
else:
 print(f'發現一個新紅包,搶起來!')
 poco("com.tencent.mm:id/d1v")
 msg.click()

 click_open = poco("com.tencent.mm:id/d02")
 if click_open.exists():
 click_open.click()
 keyevent('BACK')

6 后記

若我們在一臺電腦上并不想安裝Airtest IDE,還能執行這個腳本嗎?

當然可以,只需要安裝好「pocoui」這個第三方庫就可以“拋棄”它了!

pip install pocoui

利用 AirtestIDE 創建一個項目時,設備類型選中 Android,就會在編碼區生成一段初始化的代碼。

from airtest.core.api import *
auto_setup(__file__)

from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

我們自己編寫的Python代碼中也需要加上這段初始化的代碼。

再次強調,在執行腳本時要確保手機連上電腦,并確保「adb」命令正常運行。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

全椒县| 塔河县| 化隆| 九龙县| 盘锦市| 大余县| 柳江县| 武宁县| 中阳县| 新邵县| 深水埗区| 罗源县| 阜康市| 庐江县| 东兴市| 会东县| 永寿县| 陈巴尔虎旗| 乳山市| 耒阳市| 樟树市| 金堂县| 五指山市| 汪清县| 泽普县| 乌什县| 沙田区| 昌宁县| 田林县| 明溪县| 同德县| 林周县| 长垣县| 通河县| 安多县| 肥西县| 华宁县| 扬州市| 聂拉木县| 瓦房店市| 玛纳斯县|