日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

用Python设计抢红包系统

發(fā)布時(shí)間:2023/12/8 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Python设计抢红包系统 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

目錄


?

0 引言

提到搶紅包,就不得不提Xposed框架,它簡(jiǎn)直是個(gè)搶紅包的神器,但使用Xposed框架有一個(gè)前提條件:手機(jī)需要root,對(duì)于蘋果手機(jī)的話就需要越獄了?,F(xiàn)在的手機(jī)想要root或越獄并不容易,同時(shí)這會(huì)對(duì)手機(jī)安全性帶來一些風(fēng)險(xiǎn),搶紅包本身只是個(gè)娛樂活動(dòng),這樣做就得不償失了。

為了自動(dòng)搶紅包,python能幫我們實(shí)現(xiàn)嗎?

答案是肯定的,本文就帶大家一起探索下用Python如何實(shí)現(xiàn)自動(dòng)搶紅包。

1 環(huán)境

操作系統(tǒng):Windows

Python版本:3.7.2

手機(jī)系統(tǒng):Android

2 需求分析

這里我們的需求是實(shí)現(xiàn)自動(dòng)搶紅包。首先要打開微信,進(jìn)入到指定的群聊,識(shí)別微信紅包、執(zhí)行搶紅包的動(dòng)作。這就是關(guān)鍵的步驟,簡(jiǎn)單清晰。

因?yàn)殡娔X版本的微信沒有搶紅包的功能,我們只能手機(jī)微信,那么就需要把手機(jī)連上電腦,通過電腦控制手機(jī)來自動(dòng)搶,那就需要確?!?strong>adb」命令可正常執(zhí)行。

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

3 前置準(zhǔn)備

3.1 打開手機(jī)的USB調(diào)試

要正常使用「adb」需要打開USB調(diào)試,設(shè)置項(xiàng)通常出現(xiàn)在手機(jī)系統(tǒng)設(shè)置中的[開發(fā)人員選項(xiàng)]里面。

在手機(jī)上打開USB調(diào)試后,接下來我們通過Airttest IDE驗(yàn)證 adb 運(yùn)行是否正常。

3.2 下載安裝Airtest IDE

開始之前先,先解釋下airttest相關(guān)概念:

Airtest?是一個(gè)跨平臺(tái)的、基于圖像識(shí)別的UI自動(dòng)化測(cè)試框架,適用于游戲和App,支持平臺(tái)有Windows、Android和iOS。

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

AirtestIDE?是一個(gè)我們配套推出的跨平臺(tái)的UI自動(dòng)化測(cè)試編輯器,內(nèi)置了Airtest和Poco的相關(guān)插件功能,能夠使用它快速簡(jiǎn)單地編寫腳本。

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

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

使用AirtestIDE對(duì)Android應(yīng)用進(jìn)行自動(dòng)化操作,第一步就需要連接Android設(shè)備。

  • 請(qǐng)使用USB線連接手機(jī),手機(jī)上出現(xiàn)的?允許USB調(diào)試?彈窗,點(diǎn)擊?確定

  • 點(diǎn)擊連接面板中的?refresh?ADB?按鈕,設(shè)備列表將會(huì)刷新。

  • 點(diǎn)擊列表內(nèi)對(duì)應(yīng)設(shè)備的?Connect?完成連接。

  • 若設(shè)備未刷出,點(diǎn)擊?refresh?ADB?按鈕。

  • ?

    若連接遇到問題,請(qǐng)參考Airtest的官方教程:Android真機(jī)連接

    4 搶紅包流程回顧

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

    ?

    在AirtestIDE中,我們可以通過暫停功能,凍結(jié)當(dāng)前的UI樹形結(jié)構(gòu)來精確地檢視UI控件,我們先來分析下這個(gè)頁面中元素標(biāo)識(shí)。

    ▲聊天頁面中整體的群聊消息的元素標(biāo)識(shí) com.tencent.mm:id/d1v

    ?

    ▲聊天頁面中單個(gè)群聊消息的元素標(biāo)識(shí) com.tencent.mm:id/b6e

    接下來進(jìn)入我們準(zhǔn)備要搶紅包的群聊中,識(shí)別出紅包并執(zhí)行搶紅包的動(dòng)作。

    我們先來看看紅包的標(biāo)識(shí):

    ▲紅包標(biāo)識(shí)的示例1 com.tencent.mm:id/aql

    ▲紅包標(biāo)識(shí)的示例2 ?com.tencent.mm:id/aql

    點(diǎn)擊紅包,記錄下彈出的大紅包頁面中“開”的元素標(biāo)識(shí)

    ▲大紅包頁面中”開“的標(biāo)識(shí) com.tencent.mm:id/d02

    這里我們需要判斷是紅包是否有效,比如已被領(lǐng)完或是已被自己領(lǐng)取的紅包就是無效的,我們?cè)趫?zhí)行時(shí)可以跳過這些。

    ▲已領(lǐng)取紅包的標(biāo)識(shí) com.tencent.mm:id/apk

    ▲已被領(lǐng)完紅包的標(biāo)識(shí) com.tencent.mm:id/apk

    我們用的各元素的標(biāo)識(shí)都已取到,接下來就是組織我們的代碼。

    5 代碼梳理

    首先得打開微信,利用Airtest啟動(dòng)app應(yīng)用,只須一行代碼即可搞定,如下

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

    獲取當(dāng)前頁面中所有所有群聊的名稱

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

    選擇并進(jìn)入指定的群聊

    #?指定搶紅包的群聊名稱 chat?=?input('請(qǐng)指定群聊名稱:') if?chat?in?Chat_names:index?=?Chat_names.index(chat)#?點(diǎn)擊進(jìn)入指定的群聊Chat_msg[index].click()

    在微信聊天頁面中,獲取當(dāng)前頁面中的所有消息元素。

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

    遍歷消息并查找紅包

    for?msg?in?msg_list:#?微信紅包的標(biāo)識(shí)LuckyMoney?=?msg.offspring('com.tencent.mm:id/aql')#?已失效紅包(比如已領(lǐng)取、已被領(lǐng)完)的標(biāo)識(shí)Invalid?=?msg.offspring('com.tencent.mm:id/aqk')#?判斷紅包是否有效并搶起來!if?LuckyMoney:pass

    在LuckyMoney中定義搶紅包的動(dòng)作

    if?Invalid.exists()?and?(Invalid.get_text()=='已領(lǐng)取'?or?Invalid.get_text()=='已被領(lǐng)完'):print(f'紅包已無效,跳過……')continue else:print(f'發(fā)現(xiàn)一個(gè)新紅包,搶起來!')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 后記

    若我們?cè)谝慌_(tái)電腦上并不想安裝Airtest IDE,還能執(zhí)行這個(gè)腳本嗎?

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

    pip install pocoui

    利用?AirtestIDE?創(chuàng)建一個(gè)項(xiàng)目時(shí),設(shè)備類型選中 Android,就會(huì)在編碼區(qū)生成一段初始化的代碼。

    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代碼中也需要加上這段初始化的代碼。?

    再次強(qiáng)調(diào),在執(zhí)行腳本時(shí)要確保手機(jī)連上電腦,并確?!竌db」命令正常運(yùn)行。

    另外本人還開設(shè)了個(gè)人公眾號(hào):JiandaoStudio ,會(huì)在公眾號(hào)內(nèi)定期發(fā)布行業(yè)信息,以及各類免費(fèi)代碼、書籍、大師課程資源。

    ?

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

    掃碼關(guān)注本人微信公眾號(hào),有驚喜奧!公眾號(hào)每天定時(shí)發(fā)送精致文章!回復(fù)關(guān)鍵詞可獲得海量各類編程開發(fā)學(xué)習(xí)資料!

    例如:想獲得Python入門至精通學(xué)習(xí)資料,請(qǐng)回復(fù)關(guān)鍵詞Python即可。

    總結(jié)

    以上是生活随笔為你收集整理的用Python设计抢红包系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。