天天看點

安卓自動化工具Fastbot 問題總結經驗Fastbot:行進中的智能 Monkey

Fastbot:行進中的智能 Monkey

背景:

Fastbot是位元組跳動基于Monkey進行二次開發的一款工具,相對與Monkey來說會更加智能。

原理和源檔案參考:

傳送:https://juejin.cn/post/6877360102123241480#heading-0

https://github.com/bytedance/Fastbot_Android

随機方法:

使用方法:

1.模拟器或者真機連接配接電腦,用adb devices檢測是否連接配接成功;

下面是基于真機(小米)模拟

C:\Users\Administrator>adb devices
List of devices attached
0a1e0f3d5    device      

注意:手機需要開啟開發者模式和usb授權;手機連接配接為檔案夾模式

2.把兩個附件: framework.jar , monkeyq.jar push 到手機上某個目錄中,建議/sdcard

adb push framework.jar /sdcard

adb push monkeyq.jar /sdcard      

備注:真機可能會有權限問題,提示無權限;

解決:使用adb指令:adb shell ls  /sdcard 列印所有檔案,發現這個檔案夾就是與電腦傳送預設檔案夾;

可以通過手機連接配接電腦,設定為:檔案模式,右鍵兩個附件選擇發送到手機,就預設到sdcard這目錄

不知道adb 指令可以參考adb日常使用方法 :https://www.cnblogs.com/shoebill/p/14430554.html

C:\Users\Administrator>adb shell ls /sdcard      

3. 運作随機腳本指令:

adb -s 裝置号 shell CLASSPATH=/sdcard/monkeyq.jar:/sdcard/framework.jar exec app_process /system/bin com.android.commands.monkey.Monkey -p 包名 --agent robot --running-minutes 周遊時長 --throttle 事件頻率 -v -v      

執行個體

adb shell CLASSPATH=/data/monkeyq.jar:/data/framework.jar exec app_process /system/bin com.android.commands.monkey.Monkey -p com.test.today --agent robot --running-minutes 10 --throttle 500 -v -v      

包需要特别打才能運作執行正常;

建議:執行指令前,先進行登入,随機的場景遇到需要登入的功能,基本跳不過去,登入後可覆寫的功能點能加大,相對Monkey随機覆寫,此工具覆寫更大;

自定義腳本:

腳本的設計也是基于xpath,結合每個activity,定位到目前的xpath,最後結果發現并不能按照自定義的腳本執行,更加偏向于随機跑,

把自定義命名為:并放到sdcard 目錄,執行指令:

adb shell CLASSPATH=/data/monkeyq.jar:/data/framework.jar exec app_process /system/bin com.android.commands.monkey.Monkey -p com.test.today --agent robot -v 1#1代表執行次數      

分析:

通過列印每個頁面的activity和元素發現,發現有些頁面的activity不一樣的,還是id,name等元素的clickable = false,

懷疑以上兩個原因導緻自定義腳本不能如實跑,例如:activity跟腳本不一緻,xpath的元素是不可點選導緻,

反思:如果是元素不可點選,随機腳本應該也不能正常跑,這裡有點沖突,

有哪位大神有研究,并能正常執行,請指點一下迷津,跪謝!!!

教程的列子:

實際:

 遇到查找activity 與 定位元素問題,可以使用下面指令:

#找activity的方法:
#能找到包名和activities,但activities可能是廣告的
aapt dump badging D:news.apk
 
#在啟動app過程 執行下面指令能提過廣告的activities
#例如有啟動頁的情況下,需要那打開a跳過該廣告頁,可以在跳過廣告頁,執行下面的指令即可
adb shell dumpsys window w | findstr \/ | findstr name=

#下載下傳目前頁面的定位和activity資訊
adb shell uiautomator dump      

總結:

通過fastbot 結合手機的性能監控工具,可以運用于穩健性測試與偶現的閃退問題(配合日志捕捉)的發現;