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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python自动抢红包,从此再也不会错过微信红包了!

發布時間:2024/1/8 python 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python自动抢红包,从此再也不会错过微信红包了! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者 | 上海小胖

來源 | Python專欄(ID:xpchuiit)?


目錄:

0 引言

1 環境

2 需求分析

3 前置準備

4 搶紅包流程回顧

5 代碼梳理

6 后記


0 引言

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

?

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

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


1 環境

操作系統:Windows

Python版本:3.7.2

手機系統:Android


2 需求分析

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

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

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


3 前置準備

3.1 打開手機的USB調試

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

在手機上打開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的界面如下:


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

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

  • 點擊連接面板中的?refresh?ADB?按鈕,設備列表將會刷新。

  • 點擊列表內對應設備的?Connect?完成連接。

  • 若設備未刷出,點擊?refresh?ADB?按鈕。


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


    4 搶紅包流程回顧

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


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

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


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


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

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

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


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

    ?

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

    ? ? ? ?

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

    ?

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

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


    ▲已被領完紅包的標識 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代碼中也需要加上這段初始化的代碼。?

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

    對Airtest有興趣的小伙伴,可以參考airtest官方教程:AirtestIDE官方文檔?

    后臺回復:Python搶紅包,獲取本文所涉及的完整代碼

    留言打卡 DAY 44


    今日的留言話題是聊聊你此前搶紅包的有趣經歷,關于留言打卡的規則可以參考,請按照昵稱+天數(請以自己實際連續打卡的天數為準,如day1 or day2 or day3)+ 留言內容(不少于15字)的方式留言


    ◆?◆?◆ ?◆?◆


    長按二維碼關注我們



    數據森麟公眾號的交流群已經建立,許多小伙伴已經加入其中,感謝大家的支持。大家可以在群里交流關于數據分析&數據挖掘的相關內容,還沒有加入的小伙伴可以掃描下方管理員二維碼,進群前一定要關注公眾號奧,關注后讓管理員幫忙拉進群,期待大家的加入。


    管理員二維碼:



    猜你喜歡

    ?

    總結

    以上是生活随笔為你收集整理的Python自动抢红包,从此再也不会错过微信红包了!的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。