如何在appium中获取带有特定标签的ADB logcat?

时间:2018-12-14 12:30:39

标签: selenium adb appium logcat

我想通过APPIUM获取特定标签(例如:testing_aws)的ADB logcats。实际上,我是直接从控制台执行以下操作的

  • 我导航到 / home / jagadeesh / android-sdk-linux / platform-tools
  • 然后我运行了此命令adb shell logcat | grep testing_aws,该命令已成功获得预期的数据
  • 现在我想通过appium获得相同的数据
  • 我已经看到了诸如List<LogEntry> adbLogs =driver().manage().logs().get("logcat").filter(Level.ALL);之类的一些解决方案,它将提供完整的设备日志,但是我找不到一种使用特定标签进行过滤的方法(例如:testing_aws)
  • 因此,如果有一种方法可以按标记名进行过滤并通过appium获取输出,请帮助我。

1 个答案:

答案 0 :(得分:2)

您可以先获取所有日志

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

然后您可以过滤您的日志。

for (LogEntry logEntry : logEntries) {
    if (logEntry.getMessage().contains("testing_aws")) {
        System.out.println(logEntry.getMessage());
    }
}

如果要将过滤后的日志添加到文件中,可以按照以下步骤进行操作:

List<LogEntry> logEntries = driver.manage().logs().get("logcat").filter(Level.ALL);
File logFile = new File("path to store file"+"filename"+".txt");
logFile.getParentFile().mkdirs();

PrintWriter log_file_writer = new PrintWriter(logFile);
for (LogEntry logEntry : logEntries) {
    if (logEntry.getMessage().contains("testing_aws")) {
        log_file_writer.println(logEntry);
    }
}
log_file_writer.flush();