android UiAutomator控制多台手機同時運行用例的方法

  • 2019 年 10 月 11 日
  • 筆記

本人在使用android UiAutomator的時候,有個問題一直困擾著我,使用調試類做測試,電腦只能插上一台手機,前些天偶然發現了adb命令裡面有一個 -s 的參數可以區分不同的手機設備,故修改了一下快速調試類的方法,使得能夠同時連上兩台手機做測試了,下面分享一下主要的程式碼,共大家參考。

下面這個是快速調試類的運行方法,多加一個參數就可以了:

    public UiAutomatorHelper(String jarName, String testClass, String testName, String androidId, String devicesId) {          System.out.println("-----------start--uiautomator--debug-------------");          workspace_path = getWorkSpase();          System.out.println("----工作空間:tn" + getWorkSpase());            jar_name = jarName;          test_class = testClass;          test_name = testName;          android_id = androidId;          devices = devicesId;          runUiautomator();          System.out.println("*******************");          System.out.println("---FINISH DEBUG----");          System.out.println("*******************");      }  

下面是push和run方法,在adb命令後面加上devices參數即可:

    // 4---push jar      public void pushTestJar(String localPath) {          localPath = """ + localPath + """;          System.out.println("----jar包路徑: " + localPath);          String pushCmd = "adb -s "+devices+" push " + localPath + " /data/local/tmp/";          System.out.println("----" + pushCmd);          execCmd(pushCmd);      }        // 運行測試      public void runTest(String jarName, String testName) {          String runCmd = "adb -s "+devices+" shell uiautomator runtest ";//此處-s表示機器          String testCmd = jarName + ".jar " + "--nohup -c " + testName;          System.out.println("----runTest:  " + runCmd + testCmd);          execCmd(runCmd + testCmd);      }  

下面是要調試類中的使用方法,也是加一個參數即可,將來肯定是要做一個list或者map數組和實時獲取設備的devicesid的,這裡比較粗糙,直接寫了值。

new UiAutomatorHelper("Demo", "student.Student", "testTest", "1", NEXUS5DEVICESID);

以後打算用多執行緒讓兩台手機同時運行不同的測試用例,不過暫時沒想好管理策略。