Python教你全自動搶微信紅包!啥年代了還手動搶~

最近在做手機app自動化測試,想用python寫個自動搶微信紅包的程序,先在網上查了一下,發現搶紅包教程要麼是用itchat模塊做到紅包提醒功能,要麼root手機後用Xposed框架,這兩種方式都不是我想要的結果。於是我決定用appium模塊實現此功能,最後發現僅用了80行代碼,整個過程只涉及到元素檢測和模擬點擊操作,非常簡單易懂,下面給大家詳細介紹一下我是如何實現的。


整體思路:


Python教你全自動搶微信紅包!啥年代了還手動搶~


這是整個程序的框架圖,首先需要模擬登錄微信,然後進入微信聊天界面,接著進入循環過程:

打開第一個聊天窗口,檢測有無未領取的紅包,若無,則直接返回;

若有,先檢測是否被領完,若未領完則打開該紅包,若領完則返回。

通過設置適當時間間隔,就可以一直檢測最新消息中有無紅包。


環境配置:

首先需要安裝appium並配置相關環境。主要方法是:

先在官網下載安裝appium,然後安裝Android SDK,但是直接安裝的話會有各種bug,很不方便,我的方法是先安裝Android Studio,在它裡面可以安裝Android SDK,最後再安裝JAVA,並配置JAVA_HOME和CLASSPATH兩個參數的環境變量,這套流程下來以後就可以使用appium了。


appium使用簡介

appium是一個開源、跨平臺的測試框架,可以用來測試原生及混合的移動端應用,支持IOS、Android及FirefoxOS平臺。作為自動化測試工具,主要是先定位app界面的元素,再通過模擬點擊、滑動等動作來操控手機,從而達到自動化測試的效果。


Python調用appium模塊前,要先打開appium客戶端


Python教你全自動搶微信紅包!啥年代了還手動搶~


再點擊start Server


Python教你全自動搶微信紅包!啥年代了還手動搶~


再點擊右上角的搜索框


Python教你全自動搶微信紅包!啥年代了還手動搶~


接著配置4個參數,第一個是手機系統版本,第二個是手機具體型號(在手機設置-關於手機中可以找到),第三、四分別是微信APP的appPackage和appActivity參數,獲取方法如下:


1.首先在Android SDK安裝文件夾下找到aapt.exe工具,並記住該路徑。


Python教你全自動搶微信紅包!啥年代了還手動搶~


2.下載微信app到電腦,保存位置,打開命令行,執行如下代碼:


Python教你全自動搶微信紅包!啥年代了還手動搶~


其中上面是aapt.exe工具所在的位置,紅色遮住的是微信APP所在的位置,回車,在返回結果中尋找


Python教你全自動搶微信紅包!啥年代了還手動搶~


這是微信APP的appPackage參數


Python教你全自動搶微信紅包!啥年代了還手動搶~


這是微信APP的appAcivity信息。

到此,我們的準備工作就完成了,下面就開始搶紅包操作了。


自動搶紅包流程:

第一步:模擬登錄

主要是用appium模擬按鍵操作,步驟是比較好理解,代碼如下:


Python教你全自動搶微信紅包!啥年代了還手動搶~


其中第一行的desired_caps既是上述的四個參數。


第二步:循環點擊第一個聊天窗口所在的座標


一般情況下,最新消息都是在最上方,所以我們只需循環打開第一個聊天窗口,檢測有無未領取的紅包即可。


需要注意的是,微信訂閱號和一般聊天窗口的返回元素是不同的,要做好區分,本文是識別到微信訂閱號後直接刪除該聊天框。


Python教你全自動搶微信紅包!啥年代了還手動搶~


第三步:判斷當前聯繫人窗內的紅包是否未領取


有時候聊天界面會有好多紅包,有已被自己領取的,有未被自己領取的,我們首先要排除掉已領取的紅包,先來分析一下已領取的紅包:


Python教你全自動搶微信紅包!啥年代了還手動搶~

Python教你全自動搶微信紅包!啥年代了還手動搶~


已領取的紅包多了“已領取”3個字

它的元素為:


Python教你全自動搶微信紅包!啥年代了還手動搶~


所以我們只需要分析一下紅包元素裡是否存在‘com.tencent.mm:id/aul’,就可以判斷該紅包是否已領取,代碼如下:


Python教你全自動搶微信紅包!啥年代了還手動搶~


若存在,說明紅包已領過,則返回;若不存在,則進入第四步領取紅包。


第四步:領取紅包


因為不能確定每個未被自己領取的紅包是否已被別人領完,所以打開紅包以後還要檢測一下紅包是否被領完


Python教你全自動搶微信紅包!啥年代了還手動搶~

Python教你全自動搶微信紅包!啥年代了還手動搶~


分兩種情況:

1.紅包未被領完,則點擊領取;


Python教你全自動搶微信紅包!啥年代了還手動搶~


2.紅包已被領完,則返回。

點擊下面叉號返回:


Python教你全自動搶微信紅包!啥年代了還手動搶~

Python教你全自動搶微信紅包!啥年代了還手動搶~


第五步:整體效果展示

下面給大家演示一下全自動搶紅包的整個流程:


分享到:


相關文章: