添加WiFi測試APP下載地址java
傳送門android
本人在使用monkey進行測試的時候,發現monkey參數裏面--pct-appswitch參數並很差用,隨機性比較大,因此想本身來控制啓動APP的次數和間隔。以前經過批處理命令bat和shell腳本都實現過,可是如今要作成一個jar的工具包,只能寫在一個多線程類裏,隨便把校驗WiFi開關狀態的方法也寫在了一塊兒。分享代碼,供你們參考。git
package monkeytest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import source.Common; public class StartApp extends Thread { public boolean MKEY = true;//線程開關 public static boolean WIFISTATUS = true;// WiFi狀態開關,默認開 @Override public void run() { while (MKEY) { Common.getInstance().sleep(60 * 1000); keepWifiONorOFF(WIFISTATUS); startJuziApp(); } } /** * 啓動橘子APP */ public void startJuziApp() { if (Monkey.package_name.contains("happyjuzi")) { execCmdAdb("adb shell am start -n com.happyjuzi.apps.juzi/.SplashActivity"); } else if (Monkey.package_name.contains("article.news")) { execCmdAdb("adb shell am start -n com.ss.android.article.news/.activity.SplashBadgeActivity");// 今日頭條 } } /** * 保持WiFi狀態的方法 * * @param status * 當前WiFi的指望狀態 */ public void keepWifiONorOFF(boolean status) { if (status & wifiIsOn()) {// 判斷WiFi狀態是否跟預期狀態一致 closeOrOpenWifi(); } } /** * wifi是否打開 * * @return 開打true,沒打開false */ private boolean wifiIsOn() { String cmd = "adb shell ifconfig wlan0"; System.out.println("執行:" + cmd); String OSname = System.getProperty("os.name"); try { Process p = null; if (OSname.contains("Mac")) { p = Runtime.getRuntime().exec(Common.ADB_PATH + cmd); } else { p = Runtime.getRuntime().exec("cmd /c " + cmd); } // 正確輸出流 InputStream input = p.getInputStream();// 建立並實例化輸入字節流 BufferedReader reader = new BufferedReader(new InputStreamReader(input));// 先經過inputstreamreader進行流轉化,在實例化bufferedreader,接收內容 String line = ""; while ((line = reader.readLine()) != null) {// 循環讀取 if (line.contains("RUNNING")) { return true; } } reader.close();// 此處reader依賴於input,應先關閉 input.close(); } catch (IOException e) { Common.getInstance().output("執行" + cmd + "失敗!"); e.printStackTrace(); } return false; } /** * 開關WiFi */ public void closeOrOpenWifi() { try { Runtime.getRuntime().exec(Common.ADB_PATH + "adb shell am start -n run.wifibutton/.WifiButtonActivity") .waitFor(); } catch (InterruptedException | IOException e) { Common.getInstance().output("WIFI開關異常!", e); } } /** * 結束線程方法 */ public void stopThread() { this.MKEY = false; } /** * 執行cmd命令 * * @param cmd * 命令 */ public static void execCmdAdb(String cmd) { System.out.println("正在執行:" + cmd); String OSname = System.getProperty("os.name"); try { if (OSname.contains("Mac")) { Runtime.getRuntime().exec(Common.ADB_PATH + cmd); } else { Runtime.getRuntime().exec("cmd /c " + cmd); } } catch (IOException e) { System.out.println("執行" + cmd + "失敗!"); e.printStackTrace(); } } }