从adb logcat捕获输出

时间:2017-04-05 17:31:28

标签: android python selenium adb logcat

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

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

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

1 个答案:

答案 0 :(得分:2)

日志总是"在后台运行",只是您是否正在查看它们。相反,当你需要一个日志转储时,我会建议使用

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)