ADB shell获取Toast消息

时间:2016-06-03 13:28:34

标签: java android shell

我一直在研究Java测试框架,最后测试了一个Android应用程序,它可以执行大量的toast消息。

问题是框架不使用除ADB以外的任何东西,我不能使用任何额外的库。

那么有没有办法通过adb从应用程序获取烘烤消息? 我不介意为此单独编写数百行。

1 个答案:

答案 0 :(得分:1)

您可以通过命令行中adb shell uiautomator events的事件检查Toast消息。但是,在您的java测试框架中,您可以创建一个代码重用方法,该方法运行此命令并将其解析为您要将其与try块进行比较的任何字符串,如下所示:

try {
        Process process = Runtime.getRuntime().exec("uiautomator events");
        BufferedReader bufferedReader = new BufferedReader(
                new InputStreamReader(process.getInputStream()));

        StringBuilder log=new StringBuilder();
        String toastMessage;
        while ((toastMessage = bufferedReader.readLine()) != null) {
            log.append(toastMessage).append("\n");

        if (toastMessage.contains(myToastStringVar)) {
              Log.i("ToastMessageMatcher", "" // <-- your info message);
            } else {
              Log.e("ToastMessageMatcher", "" // <-- your error message);
            }
        }
        bufferedReader.close();
        process.waitFor();
        System.out.println(log.toString());
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }

这也可以直接在你的衍生物中。