monkey腳本實現有序用戶操作流

monkey隨機測試都會了,就是一條命令,好處是簡單粗略的判斷一下app的穩定性。如果能通過腳本完成有序用戶操作流,那就離實際情況更近了一步。下面跟我一起來學習吧。

一、先學習一下monkey執行腳本的命令 -f 腳本。

命令:adb shell monkey -p 包名 -v -f /sdcard/monkey.script times  >d:/ monkey.txt

腳本可以爲任何類型,txt,script等都可以

先運行一下,找找感覺。

如從網上找到一段腳本:

//header
      type= raw events
      count= 10
      speed= 1.0
  //line at the end of the header means that below it is the context of script
      start data >>
      DispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314,
          0.06666667,0,0.0,0.0,65539,0)
      DispatchKey(5113146,5113146,0,20,0,0,0,0)
      DispatchFlip(true)
      
type指明類型

count說明執行次數,但是這裏改成任何值都執行一次,monkey命令可以指定執行次數,這裏也就無所謂了

speed命令執行速率。改動無影響,可以通過monkey命令行指定。

以上三個參數改動都沒什麼影響,一般不做改動。

start data >>相當於一個入口,說明腳本從下面開始執行


把這段腳本存在c盤的根目錄下,取名monkey.script,把這個腳本發送到手機的sd卡中



看看是否發送成功,ls後看到有mokey.script就證明成功



在app上運行腳本

adb shell monkey -p 包名 -v -f  /sdcard/monkey.script  times 可以看到真機的app已經按照腳本在跑了,並且在命令行顯示腳本事件。




adb shell monkey -p 包名 -v -f  /sdcard/monkey.script  times >d:/ monkey.txt,到處到電腦,進行查看



二、腳本用到的API

在MonkeySourceScript.java中規定了如下api可以供用戶使用

 privatestaticfinalString EVENT_KEYWORD_POINTER ="DispatchPointer";
 
DispatchPointer(long downTime, long eventTime, int action,

   float x, float y, float pressure, float size, int metaState,

   float xPrecision, float yPrecision, int device, int edgeFlags)

 
privatestaticfinalString EVENT_KEYWORD_TRACKBALL ="DispatchTrackball";
 
DispatchTrackball(long downTime, long eventTime, int action,

   float x, float y, float pressure, float size, int metaState,

   float xPrecision, float yPrecision, int device, int edgeFlags)

 
 
privatestaticfinalString EVENT_KEYWORD_KEY ="DispatchKey";
 
DispatchKey(long downTime, long eventTime, int action, int code,

   int repeat, int metaState, int device, int scancode)

 
 
privatestaticfinalString EVENT_KEYWORD_FLIP ="DispatchFlip";
 
DispatchFlip(boolean keyboardOpen)

 
 
privatestaticfinalString EVENT_KEYWORD_KEYPRESS ="DispatchPress";
 
DispatchPress(int keyCode)

 
 
   privatestaticfinalString EVENT_KEYWORD_ACTIVITY ="LaunchActivity";
 
LaunchActivity(String pkg_name, String cl_name)

 
 
privatestaticfinalString EVENT_KEYWORD_INSTRUMENTATION ="LaunchInstrumentation";
LaunchInstrumentation(String test_name, String runner_name)

 
 
privatestaticfinalString EVENT_KEYWORD_WAIT ="UserWait";
 
UserWait(long sleeptime)

 
 
privatestaticfinalString EVENT_KEYWORD_LONGPRESS ="LongPress";
 
LongPress(int keyCode)

 
 
privatestaticfinalString EVENT_KEYWORD_POWERLOG ="PowerLog";
 
PowerLog(String power_log_type)

PowerLog(String power_log_type, String test_case_status)

 
privatestaticfinalString EVENT_KEYWORD_WRITEPOWERLOG ="WriteLog";
 
WriteLog: write power log to sdcard

 
privatestaticfinalString EVENT_KEYWORD_RUNCMD ="RunCmd";
 
RunCmd(String cmd):執行cmd命令

 
private

ps:退出shell exit

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