Appium如何获得adb logcat

时间:2015-02-17 08:42:59

标签: java logcat appium

我想知道是否有人知道如何在使用Appium for Android移动设备运行自动化测试时获取logcat。我在Windows环境中使用Java和我。

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:11)

您可以使用此实现:

List<LogEntry> logEntries = driver.manage().logs().get("logcat").getAll();

退出驱动程序之前。然后只需将列表打印到外部文件即可。

该方法看起来像这样:

public static void captureLog(AppiumDriver driver, String testName)
    throws Exception {
    DateFormat df = new SimpleDateFormat("dd_MM_yyyy_HH-mm-ss");
    Date today = Calendar.getInstance().getTime();
    String reportDate = df.format(today);
    String logPath = "C:\\automation_capture\\";
    log.info(driver.getSessionId() + ": Saving device log...");
    List<LogEntry> logEntries = driver.manage().logs().get("logcat").filter(Level.ALL);
    File logFile = new File(logPath + reportDate + "_" + testName + ".txt");
    PrintWriter log_file_writer = new PrintWriter(logFile);
    log_file_writer.println(logEntries );
    log_file_writer.flush();
    log.info(driver.getSessionId() + ": Saving device log - Done.");
    }
}

答案 1 :(得分:2)

但要小心!单个LogEntry的函数 .getTimestamp()会返回不正确的值

List<LogEntry> adbLogs = driver().manage().logs().get("logcat").filter(Level.ALL);
log.info("First timestamp: " + adbLogs.get(0).getTimestamp());
log.info("Last timestamp: " + adbLogs.get(adbLogs.size()-1).getTimestamp());

输出(它有点格式化):

第一时间戳:1 514 841 545 766

上次发布时间戳:1 514 841 594 154

真实logcat的一部分:

1514841545767 01-01 19:39:48 .570 bla-bla-bla-first-record

1514841594154 01-01 23:19:53 .440 bla-bla-bla-last-record

答案 2 :(得分:0)

您可以使用:

Process process = Runtime.getRuntime().exec("//Users//.....//.....//android-sdk-macosx//platform-tools//adb logcat -d");