最近在家遠端工作,結果作息更混亂了,早上起不來,導致我螞蟻森林能量天天被偷,嚴重影響我沙漠造樹“大業”。於是我決定用python寫個自動偷能量的程式,每天早上定時偷取好友能量,“稱霸”螞蟻森林。(本文僅為自動化測試技術研究,請勿濫用)
環境配置
首先需要安裝配置好appium自動化測試工具。appium是一個開源、跨平臺的測試框架,可以用來測試原生及混合的移動端應用,支援IOS、Android及FirefoxOS平臺。大致流程:先在官網(appium.io)下載安裝appium,然後安裝Android SDK(我的方法是安裝Android Studio,在它裡面可以安裝Android SDK),最後再安裝JAVA,並配置JAVA_HOME和CLASSPATH兩個引數的環境變數,然後就可以使用appium啦!
使用介紹
安裝appium有兩個目的,一是使用python的appium模組需要先開啟appium客戶端,否則無法使用;二是便於我們查詢某個app某個介面的元素,初次開啟時如圖所示:
配置好4個引數,第一個引數是手機作業系統,第二個引數是手機型號,在設定中可以找到,第三、四引數是app的兩個特定值,點選start session就可以操控手機了。
開發步驟
第一步:appium自動化測試app首先需要找到 ‘appPackage’ 和 ‘appActivity’ 兩個引數
這裡給大家介紹一種通用的找手機app這兩個引數的方法:
1. 先找到獲取apk資訊工具(android SDK的aapt工具)所在的位置;
2. 下載支付寶app,記住存放位置;
3. 開啟命令列,輸入以下資訊
打碼部分是支付寶app所在的位置
在輸出資訊中可以找到‘appPackage’和‘appActivity’的值:
正常情況下,appium操控開啟app時,需要配置一下引數:
但是這種配置方式會預設從頭開啟app,需要驗證各種資訊,而且需要重新登入,今天教大家如何避免重新登入,只需新增2個引數就ok:
這樣就會避免重新登入了。
程式碼如下:
如圖所示,我需要點選一次點選進入每個好友的主頁,我採取的方式是隻點選進入第一個框所在的座標,然後模擬向上滑動1個框的高度,這樣依次就可以點選到每個好友了,程式碼如下:
需要注意的是,個人的主頁是點不開的,但是不用做相應處理,因為點不進去就會在當前介面進行檢測,判作無能量球,繼續滑動到下一個。
第四步:檢測有無可收取得能量
經過分析元素,螞蟻森林主頁可以分為2類情況,第一種是沒有能量球,第二種是有能量球,判斷方法是比較上圖中classname的數量,若大於5則代表有能量球,反之則沒有,程式碼如下:
然後再進一步分析能力球能否能收取,很簡單,只需要判斷每個classname的text是否含有“能量”這2個字就ok了,因為不可收取的能量球不含這兩個字,程式碼如下:
為了防止有的能量沒到時間,到最後一個好友時,需要返回頂端重新開始檢測,我採取的方式是連續點選兩次左上角的返回鍵,然後再重複上述的點選“檢視更多好友”步驟,程式碼如下:
好了,這下再也不用擔心我的小樹苗了!