ITPub博客

首页 > 数据库 > 数据库开发技术 > UiAutomator测试中如何恢复手机输入法

UiAutomator测试中如何恢复手机输入法

原创 数据库开发技术 作者:FunTester 时间:2019-08-25 13:19:44 0 删除 编辑

本人在使用UiAutomator测试的时候,需要用到utf7输入法,每次执行之前都会切换到utf7输入法,然后每次执行结束之后再切换到正常输入法,由于测试机器比较多,所以写了一个自动切换到其他任意输入法的方法。分享代码,供大家参考。

 1    /**
2     * 修改手机输入法为utf7
3     */

4    public void setMobileInputMethodToUtf() {
5        execCmdAdb("adb shell settings put secure default_input_method jp.jun_nama.test.utf7ime/.Utf7ImeService");
6    }
7
8    /**
9     * 设置其他输入法
10     */

11    public void setMobileInputMethodToOthers() {
12        String name;
13        List<String> lists = execCmdAndReturnResult("adb shell ime list -s");
14        for (int i = 0; i < lists.size(); i++) {
15            if (!lists.get(i).contains("utf7ime")) {
16                name = lists.get(i);
17                execCmdAdb("adb shell settings put secure default_input_method " + name);
18            }
19        }
20    }

其中execCmdAdb和execCmdAndReturnResult方法如下:

 1/**
2     * 执行cmd命令
3     * 
4     * @param cmd
5     *            命令
6     */

7    public void execCmdAdb(String cmd) {
8        output("正在执行:" + cmd);
9        String OSname = System.getProperty("os.name");
10        try {
11            Process p = null;
12            if (OSname.contains("Mac")) {
13                p = Runtime.getRuntime().exec(ADB_PATH + cmd);
14            } else {
15                p = Runtime.getRuntime().exec("cmd /c " + cmd);
16            }
17            // 正确输出流
18            InputStream input = p.getInputStream();// 创建并实例化输入字节流
19            BufferedReader reader = new BufferedReader(new InputStreamReader(input));// 先通过inputstreamreader进行流转化,在实例化bufferedreader,接收内容
20            String line = "";
21            while ((line = reader.readLine()) != null) {// 循环读取
22                System.out.println(line);// 输出
23                saveToFile(line, "runlog.log");// 保存,false表示不覆盖
24            }
25            reader.close();// 此处reader依赖于input,应先关闭
26            input.close();
27            // 错误输出流
28            InputStream errorInput = p.getErrorStream();// 创建并实例化输入字节流
29            BufferedReader errorReader = new BufferedReader(new InputStreamReader(errorInput));// 先通过inputstreamreader进行流转化,在实例化bufferedreader,接收内容
30            String eline = "";
31            while ((eline = errorReader.readLine()) != null) {// 循环读取
32                System.out.println(eline);// 输出
33                saveToFile(eline, "runlog.log");// 保存,false表示不覆盖
34            }
35            errorReader.close();// 此处有依赖关系,先关闭errorReader
36            errorInput.close();
37        } catch (IOException e) {
38            output("执行" + cmd + "失败!");
39            e.printStackTrace();
40        }
41    }
 1/**
2     * 执行adb命令,返回信息
3     * 
4     * @param cmd
5     *            命令内容
6     */

7    public List<String> execCmdAndReturnResult(String cmd) {
8        output("正在执行:" + cmd);
9        List<String> result = new ArrayList<String>();
10        String OSname = System.getProperty("os.name");
11        try {
12            Process p = null;
13            if (OSname.contains("Mac")) {
14                p = Runtime.getRuntime().exec(ADB_PATH + cmd);
15            } else {
16                p = Runtime.getRuntime().exec("cmd /c " + cmd);
17            }
18            // 正确输出流
19            InputStream input = p.getInputStream();// 创建并实例化输入字节流
20            BufferedReader reader = new BufferedReader(new InputStreamReader(input));// 先通过inputstreamreader进行流转化,在实例化bufferedreader,接收内容
21            String line = "";
22            while ((line = reader.readLine()) != null) {
23                // output(line);
24                result.add(line);
25            }
26            reader.close();// 此处reader依赖于input,应先关闭
27            input.close();
28        } catch (IOException e) {
29            output("执行" + cmd + "失败!");
30            e.printStackTrace();
31        }
32        return result;
33    }

往期文章精选

  1. java一行代码打印心形

  2. Linux性能监控软件netdata中文汉化版

  3. 接口测试代码覆盖率(jacoco)方案分享

  4. 性能测试框架

  5. 如何在Linux命令行界面愉快进行性能测试

  6. 图解HTTP脑图

  7. 写给所有人的编程思维

  8. 将json数据格式化输出到控制台

  9. 如何测试概率型业务接口

  10. 将swagger文档自动变成测试代码

  11. Mac+httpclient高并发配置实例

  12. httpclient处理多用户同时在线

公众号地图 ☢️ 一起来~FunTester

原文作者:FunTester;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-07-07

  • 博文量
    1037
  • 访问量
    420676