Python教你全自動搶微信紅包

王平發表於2020-02-17

這是猿人學讀者的第二篇投稿,讀者是:帥鍋鍋。

 

最近在做手機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既是上述的四個引數。

本次採用的是QQ號登陸方式,效果如下:

第二步:迴圈點選第一個聊天視窗所在的座標

一般情況下,最新訊息都是在最上方,所以我們只需迴圈開啟第一個聊天視窗,檢測有無未領取的紅包即可。

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

Python教你全自動搶微信紅包

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

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

Python教你全自動搶微信紅包

Python教你全自動搶微信紅包

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

它的元素為:

Python教你全自動搶微信紅包

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

Python教你全自動搶微信紅包

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

第四步:領取紅包

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

Python教你全自動搶微信紅包

Python教你全自動搶微信紅包

分兩種情況:

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

Python教你全自動搶微信紅包

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

點選下面叉號返回:

Python教你全自動搶微信紅包

Python教你全自動搶微信紅包

第五步:整體效果展示

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

友情提示語:搶紅包雖爽,但也要注意禮尚往來哦!

PS:本文完整程式碼可在微信後臺回覆:qhb 獲得

繼續接受投稿中,好的原創Python文章快發來吧,稿費300-500元/篇。

猿人學banner宣傳圖

我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。

***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***

相關文章