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);
以後打算用多執行緒讓兩台手機同時運行不同的測試用例,不過暫時沒想好管理策略。