UiAutomator測試中如何恢復手機輸入法

本人在使用UiAutomator測試的時候,須要用到utf7輸入法,每次執行以前都會切換到utf7輸入法,而後每次執行結束以後再切換到正常輸入法,因爲測試機器比較多,因此寫了一個自動切換到其餘任意輸入法的方法。分享代碼,供你們參考。java

/**
	 * 修改手機輸入法爲utf7
	 */
	public void setMobileInputMethodToUtf() {
		execCmdAdb("adb shell settings put secure default_input_method jp.jun_nama.test.utf7ime/.Utf7ImeService");
	}
 
	/**
	 * 設置其餘輸入法
	 */
	public void setMobileInputMethodToOthers() {
		String name;
		List<String> lists = execCmdAndReturnResult("adb shell ime list -s");
		for (int i = 0; i < lists.size(); i++) {
			if (!lists.get(i).contains("utf7ime")) {
				name = lists.get(i);
				execCmdAdb("adb shell settings put secure default_input_method " + name);
			}
		}
	}

其中execCmdAdb和execCmdAndReturnResult方法以下:shell

/**
	 * 執行cmd命令
	 * 
	 * @param cmd
	 *            命令
	 */
	public void execCmdAdb(String cmd) {
		output("正在執行:" + cmd);
		String OSname = System.getProperty("os.name");
		try {
			Process p = null;
			if (OSname.contains("Mac")) {
				p = Runtime.getRuntime().exec(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) {// 循環讀取
				System.out.println(line);// 輸出
				saveToFile(line, "runlog.log");// 保存,false表示不覆蓋
			}
			reader.close();// 此處reader依賴於input,應先關閉
			input.close();
			// 錯誤輸出流
			InputStream errorInput = p.getErrorStream();// 建立並實例化輸入字節流
			BufferedReader errorReader = new BufferedReader(new InputStreamReader(errorInput));// 先經過inputstreamreader進行流轉化,在實例化bufferedreader,接收內容
			String eline = "";
			while ((eline = errorReader.readLine()) != null) {// 循環讀取
				System.out.println(eline);// 輸出
				saveToFile(eline, "runlog.log");// 保存,false表示不覆蓋
			}
			errorReader.close();// 此處有依賴關係,先關閉errorReader
			errorInput.close();
		} catch (IOException e) {
			output("執行" + cmd + "失敗!");
			e.printStackTrace();
		}
	}
/**
	 * 執行adb命令,返回信息
	 * 
	 * @param cmd
	 *            命令內容
	 */
	public List<String> execCmdAndReturnResult(String cmd) {
		output("正在執行:" + cmd);
		List<String> result = new ArrayList<String>();
		String OSname = System.getProperty("os.name");
		try {
			Process p = null;
			if (OSname.contains("Mac")) {
				p = Runtime.getRuntime().exec(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) {
				// output(line);
				result.add(line);
			}
			reader.close();// 此處reader依賴於input,應先關閉
			input.close();
		} catch (IOException e) {
			output("執行" + cmd + "失敗!");
			e.printStackTrace();
		}
		return result;
	}

往期文章精選

  1. java一行代碼打印心形
  2. Linux性能監控軟件netdata中文漢化版
  3. 接口測試代碼覆蓋率(jacoco)方案分享
  4. 性能測試框架
  5. 如何在Linux命令行界面愉快進行性能測試
  6. 圖解HTTP腦圖
  7. 寫給全部人的編程思惟
  8. 將json數據格式化輸出到控制檯
  9. 如何測試機率型業務接口
  10. 將swagger文檔自動變成測試代碼
  11. Mac+httpclient高併發配置實例
  12. httpclient處理多用戶同時在線

公衆號地圖 ☢️ 一塊兒來~FunTester

相關文章
相關標籤/搜索