前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UiAutomator测试中如何恢复手机输入法

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

作者头像
FunTester
发布2019-08-27 14:37:55
8860
发布2019-08-27 14:37:55
举报
文章被收录于专栏:FunTesterFunTester

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

代码语言:javascript
复制
    /**
     * 修改手机输入法为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方法如下:

代码语言:javascript
复制
/**
     * 执行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();
        }
    }
代码语言:javascript
复制
/**
     * 执行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;
    }

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档