一、獲取啟動包的 activity
有apk的情況下
> appt dum badging [包位置]
如果已安裝
> adb shell dumpsys package com.elzj.camera >e:/elzj.txt
二、腳本
1、自定義腳本的穩定性測試
常規Monkey測試執行的是隨機的事件流,但如果只是想讓Monkey測試某個特定場景這時候就需要用到自定義腳本了,Monkey支持執行用戶自定義腳本的測試,用戶只需要按照Monkey腳本的規范編寫好腳本,存放到手機上,啟動Monkey通過-f 參數調用腳本即可。
2、需求分析
- 從用戶角度來思考步驟該怎樣進行?
- 要操作的元素該如何定位?
- 怎樣將操作步驟轉化為測試腳本?
3、獲取元素坐標點位置
Monkey腳本只能通過坐標的方式來定位點擊和移動事件的屏幕位置,這里就需要提前獲取坐標信息。獲取坐標信息的方法很多,最簡單的方法就是打開手機中的開發人員選項,打開“顯示指針位置”。隨后,在屏幕上的每次操作,在導航欄上都會顯示坐標信息。
4、monkey腳本API簡介
LaunchActivity(pkg_name, cl_name):啟動應用的Activity。參數:包名和啟動的Activity。
Tap(x, y, tapDuration): 模擬一次手指單擊事件。參數:x,y為控件坐標,tapDuration為點擊的持續時間,此參數可省略。
DispatchPress(keyName): 按鍵。參數: keycode。 詳細的Android Keycode列表: http://blog.csdn.net/feizhixuan46789/article/details/16801429
RotateScreen(rotationDegree, persist): 旋轉屏幕。 參數:rotationDegree為旋轉角度, e.g. 1代表90度;persist表示旋轉之后是否固定,0表示旋轉后恢復,非0則表示固定不變。
DispatchFlip(true/false): 打開或者關閉軟鍵盤。
LongPress(): 長按2秒。
PressAndHold(x, y, pressDuration): 模擬長按事件。
DispatchString(input): 輸入字符串。
Drag(xStart, yStart, xEnd, yEnd, stepCount): 用於模擬一個拖拽操作。
PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模擬縮放手勢。
UserWait(sleepTime): 休眠一段時間
DeviceWakeUp(): 喚醒屏幕。
PowerLog(power_log_type, test_case_status): 模擬電池電量信息。
WriteLog(): 將電池信息寫入sd卡。
RunCmd(cmd): 運行shell命令。
DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFlags): 向指定位置,發送單個手勢。
DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFilags): 發送按鍵消息。
LaunchInstrumentation(test_name,runner_name): 運行一個instrumentation測試用例。
DispatchTrackball: 模擬發送軌跡球事件。
ProfileWait: 等待5秒。
StartCaptureFramerate(): 獲取幀率。
EndCaptureFramerate(input): 結束獲取幀率。
下面編寫一個app 登錄腳本
type=raw events # 前四行是monkey頭信息
count=10 # 這個腳本執行的次數
speed=1.0 # 執行的速率
start data >>
launchActivity(com.elzj.camera,com.elzj.camera.main.activity.WelcomeActivity) # 啟動app
Tap(115,715) # 定位到app 點擊應用
UserWait(3000) # 等待3秒
Tap(650,360) # 定位用戶名輸入框,如果有默認賬戶,要加一步把他清除了
DispatchFlip(false) # 把軟鍵盤關閉了
DispatchString(1662130****) # 輸入賬戶
Tap(275,505) # 定位到密碼輸入框
UserWait(2000) # 等待3秒
DispatchFlip(false) # 關閉軟鍵盤
DispatchString(****) # 輸入密碼
Tap(380,680) # 點擊登錄
UserWait(3000) # 等待3秒
Tap(650,1240)
UserWait(2000)
Tap(270,880)
UserWait(2000)
Tap(590,770)