Android monkeyrunner錄制 && python腳本&& adb shell input 實(shí)現(xiàn)自動(dòng)化測試

一烙样、 monkeyrunner自動(dòng)化測試(錄制與回放):

準(zhǔn)備工作: monkeyrunner.bat文件所在位置:E:\sdk\sdk\tools\bin 即在SDK的tools\bin目錄下面,將此路徑寫在環(huán)境變量path里面
整個(gè)錄制和回放過程涉及到3個(gè)步驟, 對(duì)應(yīng)3個(gè)文件 monkey_recorder.py役电、 test.mr泌霍、 monkey_playback.py, monkey_recorder 和 monkey_playback 文件從網(wǎng)上隨便百度一個(gè)

  1. 命令行輸入 monkeyrunner monkey_recorder.py 打開錄制界面
  2. 在錄制界面上輸入事件,注意每步操作都要添加wait時(shí)間,最后Export Actions 保存為test.mr文件
  3. 命令行輸入 monkeyrunner D:\as_sdk\tools\bin\monkey_playback.py C:\Users\john.dai\Desktop\test.mr
    monkey_playback中可以自己修改 需要monkeyrunner 回放的次數(shù)

這種方式不需要了解太多語法知識(shí)闯两。
缺點(diǎn)是打開的recorder界面 按鍵種類比較少,我這邊看是只有home, menu谅将,search幾個(gè)按鍵漾狼,back鍵都沒有; 不支持長按事件
想要支持back鍵和長按事件的話饥臂,需要手動(dòng)修改導(dǎo)出的 test.mr文件

添加back鍵:
PRESS|{'name':'BACK','type':'downAndUp',}
WAIT|{'seconds':1.0,}

長按屏幕某個(gè)坐標(biāo):
TOUCH|{'x':759,'y':400,'type':'down',}
WAIT|{'seconds':3.0,}
TOUCH|{'x':759,'y':400,'type':'up',}

長按某個(gè)按鍵:
PRESS|{'name':'POWER','type':'down',}
WAIT|{'seconds':3.0,}
PRESS|{'name':'POWER','type':'up',}

monkeyrunner錄制和回放過程中遇到的問題:

  1. 由于是用python語言寫的逊躁,所以 monkey_recorder 和 monkey_playback文件要注意縮進(jìn),否則很容易報(bào)錯(cuò)隅熙,類似稽煤,“mismatched input 'XXX' expecting INDENT"
  2. cmd命令行輸入 monkeyrunner XXX.py報(bào)錯(cuò):
    SWT folder '..\framework\x86' does not exist.
    Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
    解決方法:(參考http://blog.csdn.net/zjabc520/article/details/76043741)
用記事本打開monkeyrunner.bat文件 修改以下位置:(rem就是注釋的語法)
for /f %%a in ("%APP_HOME%\lib\monkeyrunner-25.3.2.jar") do set jarfile=%%~nxa
set frameworkdir=.
set libdir=
rem-----------------------------------------------------------------------
rem 注釋下面的4行
rem if exist %frameworkdir%\%jarfile% goto JarFileOk
rem   set frameworkdir=lib

rem if exist %frameworkdir%\%jarfile% goto JarFileOk
rem   set frameworkdir=..\framework

rem 手動(dòng)修改文件
set frameworkdir=..\lib
rem---------------------------------------------------------------------------
:JarFileOk
然后執(zhí)行monkeyrunner會(huì)發(fā)生adb找不到的錯(cuò)誤 ,在tools下新建framework文件夾,復(fù)制adb.exe到此文件夾下.

二. 直接編寫python腳本囚戚,最后在cmd中執(zhí)行 monkeyrunning XX.py

直接編寫python腳本的方式比較靈活酵熙,可以實(shí)現(xiàn)長按效果:
  長按屏幕某個(gè)坐標(biāo):
   MonkeyRunner.sleep(1)
   device.touch(500,400, MonkeyDevice.DOWN)
   MonkeyRunner.sleep(3)
   device.touch(500,400,MonkeyDevice.UP)
   MonkeyRunner.sleep(3)

  長按按鍵:
  MonkeyRunner.sleep(1)
  device.press('KEYCODE_POWER', "down")
  MonkeyRunner.sleep(3)
  device.press('KEYCODE_POWER', "up")

三、adb shell input

單擊: adb shell input tap 850 800      //**** 點(diǎn)擊(850驰坊,800)坐標(biāo)
滑動(dòng): adb shell input swipe 800 800 300 800   //**** 滑動(dòng)匾二,從(800,800)滑動(dòng)到(300, 800)
暫停: ping -n 4 127.0.0.1>nul   //**** 暫停4S
按鍵: adb shell input keyevent 4   //**** 模擬keycode 4是返回鍵
輸入: adb shell input text   //輸入文本
長按View: 貌似不支持
長按Key: adb shell input keyevent --longpress keycode
adb shell procrank | grep  packagename >> app_appLaunch_procrank.txt  //****導(dǎo)出packagename對(duì)應(yīng)的內(nèi)存信息

示例:

echo *********************************************>>app_appLaunch_procrank.txt
adb shell am force-stop pacakgename
adb shell am start -W -n pacakgename/activityname
echo PackageName is pacakgename >>app_appLaunch_procrank.txt
set /a NowTime = 0 ::當(dāng)前時(shí)間,單位minute
set TimeStep = 1 
ping -n 4 127.0.0.1>nul
adb shell input swipe 800 800 300 800
:continue
set /a NowTime+=1
echo 第%NowTime%次循環(huán)
  adb logcat -c
  echo start Output log
  adb shell input tap 850 800
  echo %date% %time% >> ./app_appLaunch_procrank.txt
  adb shell procrank | grep  packagename >> app_appLaunch_procrank.txt
  adb shell input keyevent 4
ping -n 1 127.0.0.1>nul
if %NowTime% lss 1000 goto continue
rem ************循環(huán)結(jié)束了
echo 循環(huán)執(zhí)行完畢
ping 127.0.01 -n 3
adb shell am force-stop packagename
rename app_appLaunch_procrank.txt     packagename_activityname.procrank.txt
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末察藐,一起剝皮案震驚了整個(gè)濱河市皮璧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌转培,老刑警劉巖恶导,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異浸须,居然都是意外死亡惨寿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門删窒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來裂垦,“玉大人,你說我怎么就攤上這事肌索〗堵#” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵诚亚,是天一觀的道長晕换。 經(jīng)常有香客問我,道長站宗,這世上最難降的妖魔是什么闸准? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮梢灭,結(jié)果婚禮上夷家,老公的妹妹穿的比我還像新娘。我一直安慰自己敏释,他們只是感情好库快,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钥顽,像睡著了一般义屏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上耳鸯,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天湿蛔,我揣著相機(jī)與錄音,去河邊找鬼县爬。 笑死阳啥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的财喳。 我是一名探鬼主播察迟,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼斩狱,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了扎瓶?” 一聲冷哼從身側(cè)響起所踊,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎概荷,沒想到半個(gè)月后秕岛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡误证,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年继薛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愈捅。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡遏考,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蓝谨,到底是詐尸還是另有隱情灌具,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布譬巫,位于F島的核電站咖楣,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏芦昔。R本人自食惡果不足惜截歉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烟零。 院中可真熱鬧,春花似錦咸作、人聲如沸锨阿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽墅诡。三九已至,卻和暖如春桐智,著一層夾襖步出監(jiān)牢的瞬間末早,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工说庭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留然磷,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓刊驴,卻偏偏與公主長得像姿搜,于是被迫代替她去往敵國和親寡润。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容