从adb logcat捕获输出
我正在自动化一个Android应用程序,并且我需要能够在运行自动化测试时捕获日志。我曾尝试使用终端模拟器,但这似乎只给控制台日志。接下来,我尝试使用从adb logcat捕获输出
log = subprocess.check_output(["adb", "logcat"])
但我做到这一点时,我的自动化脚本无限期(大概是因为它正在等待继续logcat中捕获完成后),它不适合我,因为我需要的logcat的运行停止在后台,而我的脚本正在运行。所以也许'Popen'是要走的路,然后输出输出?谢谢!
日志总是“在后台运行”,只是您是否在看它们。我会建议,而你需要一个日志转储,使用
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)
好吧,我可以在我想要捕获的进程结束时运行它,它会转储自上次转储以来捕获的所有日志?另外,我将如何去处理输出? – cjg123
因为我将使用check_output – cjg123
adb logcat -d从最后一次重新启动后转储整个日志。如果您想在测试期间只包含日志,请使用'adb logcat -c'开始测试,清除日志,然后它将只包含您想要的日志。将其转储到文件。 – TemporalWolf
你使用实时logcat的输出或者你只是需要它以后呢? – TemporalWolf
以后需要它。想要将输出保存到文件并存储在文件夹中。 – cjg123