1. 程式人生 > >MonkeyRunner_Monkeyrunner裡使用Java做為指令碼語言(1)

MonkeyRunner_Monkeyrunner裡使用Java做為指令碼語言(1)

monkeyrunner官網和很多地方都是使用的python做為指令碼語言的,但是實際上monkeyrunner是支援Java做為指令碼語言的,下面是對在monkeyrunner中使用Java的一些嘗試,已經全部使用過是可行的,需要引入的jar包包括: 
ddmlib.jar;guavalib.jar;sdklib.jar和monkeyrunner.jar 
Java程式碼  收藏程式碼
  1. package com.test  
  2. import java.util.ArrayList;  
  3. import java.util.Collection;  
  4. import java.util.HashMap;  
  5. import com.aliyun.smoking.monkeyrunner.extend.ImageProcess;  
  6. import com.android.monkeyrunner.adb.AdbBackend;  
  7. import com.android.monkeyrunner.core.IMonkeyDevice;  
  8. import com.android.monkeyrunner.core.IMonkeyImage;  
  9. import com.android.monkeyrunner.core.TouchPressType;  
  10. /** 
  11.  * this class provide java code to call monkeyrunner.jar to execute test case
     
  12.  *  
  13.  * @author cx 
  14.  *  
  15.  */  
  16. public class RunnerProxy {  
  17.     private IMonkeyDevice device;  
  18.     private AdbBackend adb;  
  19.     private static RunnerProxy instance;  
  20.     public static RunnerProxy getInstance() {  
  21.         if (instance == null) {  
  22.             instance = new RunnerProxy();  
  23.         }  
  24.         return instance;  
  25.     }  
  26.     private RunnerProxy() {  
  27.         adb = new AdbBackend();  
  28.     }  
  29.     /** 
  30.      * this function will connect to a device, emulator or phone 
  31.      */  
  32.     public void connect() {  
  33.         assert (adb != null);  
  34.         device = adb.waitForConnection();  
  35.     }  
  36.     /** 
  37.      * this function clear device connect 
  38.      */  
  39.     public void dispose() {  
  40.         if (device != null) {  
  41.             device.dispose();  
  42.             device = null;  
  43.         }  
  44.     }  
  45.     private String imageDir;  
  46.     public void setImageDir(String imageDir) {  
  47.         this.imageDir = imageDir;  
  48.     }  
  49.     public String getImageDir() {  
  50.         return imageDir;  
  51.     }  
  52.     private String logDir;  
  53.     public void setLogDir(String logDir) {  
  54.         this.logDir = logDir;  
  55.     }  
  56.     public String getLogDir() {  
  57.         return logDir;  
  58.     }  
  59.     /** 
  60.      * this function finish touch operation 
  61.      *  
  62.      * @param x 
  63.      *            : x coordinate 
  64.      * @param y 
  65.      *            : y coordinate 
  66.      */  
  67.     public void touch(int x, int y) {  
  68.         assert (device != null);  
  69.         device.shell("sendevent /dev/input/event6 3 48 1");  
  70.         device.shell("sendevent /dev/input/event6 3 53 " + x);  
  71.         device.shell("sendevent /dev/input/event6 3 54 " + y);  
  72.         device.shell("sendevent /dev/input/event6 0 2 0");  
  73.         device.shell("sendevent /dev/input/event6 0 0 0");  
  74.         device.shell("sendevent /dev/input/event6 3 48 0");  
  75.         device.shell("sendevent /dev/input/event6 0 2 0");  
  76.         device.shell("sendevent /dev/input/event6 0 0 0");  
  77.     }  
  78.     /** 
  79.      * this function finish long touch operation 
  80.      *  
  81.      * @param x 
  82.      *            : x coordinate 
  83.      * @param y 
  84.      *            : y coordinate 
  85.      */  
  86.     public void longTouch(int x, int y) {  
  87.         assert (device != null);  
  88.         device.drag(x, y, x, y, 102);  
  89.     }  
  90.     /** 
  91.      * this function finish drag from one point to another point 
  92.      *  
  93.      * @param x 
  94.      *            : x coordinate of start point 
  95.      * @param y 
  96.      *            : y coordinate of start point 
  97.      * @param endX 
  98.      *            : x coordinate of end point 
  99.      * @param endY 
  100.      *            : Y coordinate of end point 
  101.      *  
  102.      */  
  103.     public void drag(int x, int y, int endX, int endY) {  
  104.         assert (device != null);  
  105.         device.drag(x, y, endX, endY, 102);  
  106.     }  
  107.     /** 
  108.      * this function finish type a text to view operation 
  109.      *  
  110.      * @param value 
  111.      *            : text to type in 
  112.      */  
  113.     public void type(String value) {  
  114.         assert (device != null);  
  115.         device.type(value);  
  116.     }  
  117.     /** 
  118.      * this function finish click a key operation 
  119.      *  
  120.      * @param keyCode 
  121.      *            : key code 
  122.      */  
  123.     public void press(String keyCode) {  
  124.         assert (device != null);  
  125.         device.press(keyCode, TouchPressType.DOWN_AND_UP);  
  126.     }  
  127.     /** 
  128.      * this function finish start an activity operation 
  129.      *  
  130.      * @param component 
  131.      *            : activity what to start 
  132.      */  
  133.     public void startActivity(String component) {  
  134.         assert (device != null);  
  135.         String action = "android.intent.action.MAIN";  
  136.         Collection<String> categories = new ArrayList<String>();  
  137.         categories.add("android.intent.category.LAUNCHER");  
  138.         device.startActivity(null, action, nullnull, categories,  
  139.                 new HashMap<String, Object>(), component, 0);  
  140.     }