我正在自动化Android应用程序,我需要能够在运行自动化测试时捕获日志。我尝试过使用终端模拟器,但这似乎只能提供控制台日志。接下来我尝试使用
log = subprocess.check_output(["adb", "logcat"])
但是当我这样做时,我的自动化脚本无限期地停止(可能是因为它在logcat捕获完成后等待继续),这对我不起作用,因为我需要logcat在后台运行,而我的脚本是运行。所以也许' Popen'是要走的路,然后管道输出?谢谢!
答案 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)