一烙样、 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è)
- 命令行輸入 monkeyrunner monkey_recorder.py 打開錄制界面
- 在錄制界面上輸入事件,注意每步操作都要添加wait時(shí)間,最后Export Actions 保存為test.mr文件
- 命令行輸入 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錄制和回放過程中遇到的問題:
- 由于是用python語言寫的逊躁,所以 monkey_recorder 和 monkey_playback文件要注意縮進(jìn),否則很容易報(bào)錯(cuò)隅熙,類似稽煤,“mismatched input 'XXX' expecting INDENT"
- 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