Запись действий monkey


(Сергей Блохин) #1

При проведении stress-тестирования Android приложений мы часто используем monkey, который с завидным постоянством кладёт приложения. Существует ли способ записывать его действия для повторного воспроизведения?


(Andrey Kharkov) #2

Ну можно взять сканер и парсить коммандную строку и писать это все в текстовый файл в итоге будет что-то в этом роде:
Sending Touch (ACTION_UP): 0:(0.0,205.55977)

:Sending Trackball (ACTION_MOVE): 0:(-3.0,2.0)

:Sending Trackball (ACTION_MOVE): 0:(4.0,4.0)

:Sending Touch (ACTION_DOWN): 0:(54.0,378.0)

:Sending Touch (ACTION_UP): 0:(70.23189,368.46057)

:Sending Touch (ACTION_DOWN): 0:(252.0,457.0)

:Sending Touch (ACTION_UP): 0:(248.2985,455.55615)

:Sending Touch (ACTION_DOWN): 0:(268.0,137.0)

:Sending Touch (ACTION_UP): 0:(267.8827,123.57899)

:Sending Touch (ACTION_DOWN): 0:(101.0,261.0)

:Sending Touch (ACTION_UP): 0:(98.0403,268.6024)

:Sending Touch (ACTION_DOWN): 0:(10.0,478.0)

:Sending Touch (ACTION_UP): 0:(17.424154,477.805)

:Sending Flip keyboardOpen=true

:Sending Touch (ACTION_DOWN): 0:(114.0,427.0)

:Sending Touch (ACTION_UP): 0:(144.14879,449.0429)

:Sending Touch (ACTION_DOWN): 0:(182.0,266.0)

:Sending Touch (ACTION_UP): 0:(181.25595,270.51382)

:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.flexaspect.android.everycallcontrol/.MainActivity;end

// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.flexaspect.android.everycallcontrol/.MainActivity } in package com.flexaspect.android.everycallcontrol

:Sending Touch (ACTION_DOWN): 0:(126.0,43.0)

:Sending Touch (ACTION_UP): 0:(136.80482,115.796906)

:Sending Touch (ACTION_DOWN): 0:(5.0,378.0)

:Sending Touch (ACTION_UP): 0:(6.8111334,376.14938)

:Sending Touch (ACTION_DOWN): 0:(272.0,392.0)

:Sending Touch (ACTION_UP): 0:(248.82703,446.68637)

:Sending Touch (ACTION_DOWN): 0:(9.0,249.0)

:Sending Touch (ACTION_UP): 0:(16.230728,241.04366)


(Сергей Блохин) #3

Ты имеешь в виду adb shell getevent -t > events.txt?


(Andrey Kharkov) #4

a = adb … вот что я имею ввиду
try {
Process process = Runtime.getRuntime().exec(a);
InputStreamReader reader = new
InputStreamReader(process.getInputStream());
Scanner scanner = new Scanner(reader);

 	       while(scanner.hasNextLine()) {
 	    	   String line=scanner.nextLine();
             writeFile.write("\n"+line+"\r");
 	           System.out.println(line);
 	       }

 	       scanner.close();
 	   } catch(IOException e) {
 	      // TODO Auto-generated catch block
 	      e.printStackTrace();
 	   }