取之于網(wǎng)封拧,用之于網(wǎng)芜茵。本為過路人夷都,姑且搬運(yùn)中
-
一、PC端 環(huán)境搭建(基于win10專業(yè)版)
????安裝JDK(非必須)
? ? ? ??JDK官網(wǎng)下載
? ??????安裝好后在電腦的環(huán)境變量中進(jìn)行配置(控制面板\系統(tǒng)和安全\系統(tǒng)\高級系統(tǒng)設(shè)置\高級\環(huán)境變量\\編輯Path變量\新建\輸入jdk路徑)
? ??????
????安裝SDK
? ??????SDK官網(wǎng)下載
? ? ? ? 安置好后在電腦的環(huán)境變量中進(jìn)行配置(控制面板\系統(tǒng)和安全\系統(tǒng)\高級系統(tǒng)設(shè)置\高級\環(huán)境變量\\系統(tǒng)變量\新建\輸入sdk相關(guān)信息\確定)
? ? ? ? 參照上面JDK的步驟在path變量中添加sdk的相關(guān)路徑 (%ANDROID_SDK%\platform-tools;%ANDROID_SDK%\tools)
????驗證
? ? ? ? 在cmd中輸入java -version尤莺,如果有顯示java version?信息則驗證jdk成功旅敷,如果提示沒有java命令則失敗,需要檢查是否配置路徑正確颤霎。
? ? ? ? 在cmd中輸入adb devices媳谁,如果提示沒有adb命令則失敗,其余提示則成功友酱。
二晴音、Device端 (Android手機(jī))
????獲取Monkey對象
? ? ? ? 通過adb shell pm -l(也可以通過adb shell + pm list package)獲取設(shè)備中所有的package包名
? ? 簡易開始
????????從上面的包名中選出你想要的對象,將其放入txt文件中缔杉,每個包名以行隔開
? ? ? ? 將此txt文件push到data/下(push目錄可自定義)
? ? ? ? 執(zhí)行adb shell monkey?--pkg-blacklist-file?/data/xxx.txt?--throttle 1000 3600 > log.txt
? ? ? ? #--pkg-blacklist-file?參數(shù)后面的文件為白名單文件锤躁,也就是系統(tǒng)中除開這個文件里列出的包名以外均為要跑monkey的包。
? ? ? ? #--pkg-blacklist-file?參數(shù)后面的文件為黑名單文件或详,也就是系統(tǒng)中只有這個文件里列出的包要跑monkey系羞。兩者不能同時出現(xiàn)。
? ? ? ? #--throttle?參數(shù)后面為事件頻率霸琴,單位ms椒振,即每次事件的間隔。
? ? ? ? #3600?表示多少次事件梧乘,此值隨意澎迎。此值X上面的頻率,即可得出monkey要跑多久,按上例monkey要跑1000MS X 3600為1小時
? ? ? ? #> 為定向夹供,上例是定向到PC上當(dāng)前目錄的log.txt文件中辑莫。即可心> c:\log.txt到PC上,也可以> /data/log/tt.txt到設(shè)備中罩引。
? ? ? ? #1> 2> 分流定向,1> log.txt表示標(biāo)準(zhǔn)流輸出到PC的log.txt枝笨, 2 > /data/log/log.txt?表示異常流輸出到設(shè)備的/data/log/log.txt文件中袁铐。
參數(shù)大全
? ? 調(diào)試類
?????????--dbg-no-events:初始化啟動的activity,但是不產(chǎn)生任何事件横浑。
????????--hprof:指定該項后在事件序列發(fā)送前后會立即生成分析報告 —— 一般建議指定該項剔桨。
????????--ignore-crashes:忽略崩潰
????????--ignore-timeouts:忽略超時
????????--ignore-security-exceptions:忽略安全異常
????????--kill-process-after-error:發(fā)生錯誤后直接殺掉進(jìn)程
????????--monitor-native-crashes:跟蹤本地方法的崩潰問題
????????--wait-dbg:知道連接了調(diào)試器才執(zhí)行monkey測試。
? ? 約束類
? ??????-p:指定有效的package(如不指定徙融,則對系統(tǒng)中所有package有效)洒缀,一個-p 對應(yīng)一個有效package, 如:-p com.ckt -p com.ckt.asura欺冀;
????????-c:activity必須至少包含一個指定的category树绩,才能被啟動,否則啟動不了隐轩;
? ? 一般類
? ??????-s:指定產(chǎn)生隨機(jī)事件種子值饺饭,相同的種子值產(chǎn)生相同的事件序列。如: -s200
????????--throttle:每個事件結(jié)束后的間隔時間——降低系統(tǒng)的壓力(如不指定职车,系統(tǒng)會盡快的發(fā)送事件序列)瘫俊。如:--throttle100
????????--pct-touch:指定觸摸事件的百分比,如:--pct-touch5%?
????????--pct-motion (滑動事件)
????????--pct-trackball (軌跡球事件)?
????????--pct-nav (導(dǎo)航事件 up/down/left/right)
????????--pct-majornav (主要導(dǎo)航事件 back key 悴灵、 menu key)
????????--pct-syskeys (系統(tǒng)按鍵事件 Home 扛芽、Back 、startCall 积瞒、 endCall 川尖、 volumeControl)
????????--pct-appswitch (activity之間的切換)
????????--pct-anyevent(任意事件)
? ? 打印類
? ??????--help:打印幫助信息
????????-v:指定打印信息的詳細(xì)級別,一個-v增加一個級別赡鲜, 默認(rèn)級別為0空厌。最高為2,即-v -v -v
三、?便利化
使用bat腳本
#verson@auto
#20200630
echo off
rem set utf-8 page
chcp 65001
rem get time
set cur_month=%date:~8,2%
set cur_day=%date:~5,2%
set cur_date=%cur_month%-%cur_day%
set cur_time=%time:~0,8%
set monkey_dir=mk%cur_date%
set monkey_pm_file=pmlist.txt
set whitelist_file=whitelist.txt
set whitelist_bk_file=whitelist_backup.txt
set log_file=log.txt
echo monkey_dir is %monkey_dir%
echo monkey_pm_file is %monkey_pm_file%
rem entry workspace /Desktop/monkey
cd Desktop
mkdir monkey
cd monkey
rmdir %monkey_dir%
mkdir %monkey_dir%
cd %monkey_dir%
rem get all package
del /f %monkey_pm_file%
adb shell pm -l > %monkey_pm_file%
rem interaction
if not exist %whitelist_file% (
echo #verson@auto tips > %whitelist_file%
)
echo If u need hide some app, please take them into whitelist.txt!
echo If u Done, Please click any key to continue!
pause
echo all package in!
adb push %whitelist_file% /data/
cp %whitelist_file% %whitelist_bk_file%
echo lets go!
adb shell monkey --pkg-blacklist-file /data/%whitelist_file% --throttle 700 -v -v -v 9999999 > %log_file%
使用python腳本
待續(xù)
使用shell腳本
同上