原生Monkey:
實(shí)現(xiàn)原理:Java反射獲取系統(tǒng)接口,注入事件
控制業(yè)務(wù)邏輯择葡;
事件注入實(shí)現(xiàn)
功能——
系統(tǒng)自帶支持剪菱;隨機(jī)點(diǎn)擊谒撼、滑動以清、系統(tǒng)事件如音量凸舵、亮度等;
設(shè)置內(nèi)容:事件數(shù)量荚孵、范圍(指定在package)妹窖、比例分布(各個(gè)事件的比例)、Debugg選項(xiàng)(ANR处窥、Crash是否退出)
執(zhí)行l(wèi)og輸出
最低版本要求:android 5
兼容原生Monkey 參數(shù)定義嘱吗;
基于Android Monkey開發(fā):
實(shí)現(xiàn)原理使用AccesssibilityNodeInfo生成事件
adb shell CLASSPATH=/sdcard/monkey.[jar:/sdcard/framework.jar](http://jar/sdcard/framework.jar) exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.panda.videoliveplatform --uiautomatormix --running-minutes 60
特色功能——
速度足夠快:每秒達(dá)到10-15個(gè)事件;避免點(diǎn)擊重復(fù)位置
防止跳出以及點(diǎn)擊到狀態(tài)欄:選擇區(qū)域時(shí)已經(jīng)過濾掉狀態(tài)欄(防止誤操作)
判斷:喚醒屏幕
支持白名單Activity滔驾;
參數(shù)設(shè)置輸入內(nèi)容谒麦;
特殊事件序列:可利用此功能實(shí)現(xiàn)登錄效果。如:判斷在當(dāng)前Activity下:執(zhí)行輸入哆致、點(diǎn)擊動作
黑控件區(qū)域配置:
截圖以及回溯式截圖:(發(fā)送崩潰式绕德,利用回溯式截圖提供截圖;復(fù)現(xiàn)是使用直接截圖功能)
不同執(zhí)行策略:參數(shù)說明部分
--uiautomatormix 混合模式(70%控件解析隨機(jī)點(diǎn)擊摊阀,其余30%按原Monkey事件概率分布)
--pct-uiautomatormix n 可自定義混合模式中控件解析事件概率
--uiautomatordfs DFS深度遍歷算法(優(yōu)化版)(注 Android5不支持dfs)
--uiautomatortroy Troy模式 指定選擇哪些類型的控件進(jìn)行操作
待調(diào)用細(xì)則實(shí)現(xiàn)——
自動爬取加上規(guī)則引導(dǎo)(完成)
支持定制化, 可以自己設(shè)定遍歷深度(完成)
支持插件化, 允許別人改造和增強(qiáng)(完成)
支持滑動等更多動作(完成)
支持自動截獲接口請求(完成)
支持新老版本的界面對比(Doing)
beta狀態(tài)耻蛇,可用性不高;依賴sdk環(huán)境胞此;加固應(yīng)用不支持臣咖,待跟蹤觀察效果(2019.11)
原生Monkey | Maxim | app Crawler | google appCrawler | |
---|---|---|---|---|
兼容 | android全系列 | > android 5 | android, iOS | all android |
語言 | java | kotlin | scala | java? |
功能 | 單一,隨機(jī) | 定制功能 | 遍歷 | 遍歷 |
依賴 | 無 | 無 | appium | android sdk |
結(jié)果 | log text | log text漱牵、img | web展示夺蛇,文件較多 | log |
開源 | 否 | 部分開源,活躍 | 開源酣胀,2017年 | 否 |