从 adb logcat 捕获输出

Capture output from adb logcat

我正在自动化一个 Android 应用程序,我需要能够在 运行 进行自动化测试时捕获日志。我试过使用终端仿真器,但这似乎只提供控制台日志。接下来我尝试使用

        log = subprocess.check_output(["adb", "logcat"])

但是当我这样做时,我的自动化脚本无限期停止(大概是因为它在 logcat 捕获完成后等待继续),这对我不起作用,因为我需要 logcat在后台 运行,而我的脚本是 运行ning。所以也许 'Popen' 是要走的路,然后通过管道输出?谢谢!

日志总是"running in the background",就看你有没有看。相反,我会建议,当您需要日志转储时,使用

adb logcat -d

它将转储当前拥有的内容,然后退出。

所以在测试开始时 运行:

subprocess.call(shlex.split('adb logcat -c'))

清除日志。

所以最后(在任何重启之前),转储日志:

log = subprocess.check_output(shlex.split('adb logcat -d'))
with open("loggy.file", "w") as f:
    f.write(log)