如何解決monkey無法執行特定場景的問題:自定義腳本:以華爲計算器爲例。

閒話少說,先上源碼:

type = raw events
count = 1
speed = 1.0

start data >>
#打開app的包名,啓動的Activity
LaunchActivity(com.android.calculator2,com.android.calculator2.Calculator)
#休眠500ms
UserWait(500)
#點擊計算機按鈕1
Tap(105,989,1000)
UserWait(500)

#點擊計算機按鈕+號
Tap(635,850,1000)
UserWait(500)

#點擊計算機按鈕9
Tap(445,731,1000)
UserWait(500)

#點擊計算機按鈕=號
Tap(617,1071,1000)
UserWait(500)

執行結果截圖:

首先說一下爲什麼要用到自定義腳本:

原因很簡單,monkey測試是隨機的,哪怕是我們儘可能的設置好參數,但是還是無法執行特定的測試場景,如果想讓monkey測試某個特定的場景,一定要用到自定義腳本。

monkey的語法比較特別,跟shell類似,開頭是特定的,並且monkey只能通過座標的方式來定位點擊和移動事件的屏幕位置

特定開頭如下:

type = raw events    #腳本的類型
count = 1    #執行腳本次數
speed = 1.0    #執行腳本速率

start data >>   #開始monkey的命令

#利用monkey API編寫的自定義流程

趟坑日記一:編寫號的腳本必須放到手機上執行,否則會報錯。

#腳本放到手機中:
adb push 電腦路徑 手機路徑
#腳本執行命令
adb shell -f 腳本路徑 執行次數 (可以附加其他條件)

趟坑日記二:一定要加上執行次數,否則會報錯:

最後附帶monkey的常用API:

LaunchActivity(pkg_name,cl_name):啓動應用的Activity,參數:包名和啓動的應用的Activity

Tap(x,y,tapDuration):模擬一次手指點擊事件,參數:x,y爲控件的座標,tapDuration爲點擊的持續時間

DispatchPress(keyName): 按鍵。 

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): 結束獲取幀率

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章