2017-04-05 195 views
0

我正在自動化一個Android應用程序,並且我需要能夠在運行自動化測試時捕獲日誌。我曾嘗試使用終端模擬器,但這似乎只給控制檯日誌。接下來,我嘗試使用從adb logcat捕獲輸出

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

但我做到這一點時,我的自動化腳本無限期(大概是因爲它正在等待繼續logcat中捕獲完成後),它不適合我,因爲我需要的logcat的運行停止在後臺,而我的腳本正在運行。所以也許'Popen'是要走的路,然後輸出輸出?謝謝!

+0

你使用實時logcat的輸出或者你只是需要它以後呢? – TemporalWolf

+0

以後需要它。想要將輸出保存到文件並存儲在文件夾中。 – cjg123

回答

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) 
+0

好吧,我可以在我想要捕獲的進程結束時運行它,它會轉儲自上次轉儲以來捕獲的所有日誌?另外,我將如何去處理輸出? – cjg123

+0

因爲我將使用check_output – cjg123

+0

adb logcat -d從最後一次重新啓動後轉儲整個日誌。如果您想在測試期間只包含日誌,請使用'adb logcat -c'開始測試,清除日誌,然後它將只包含您想要的日誌。將其轉儲到文件。 – TemporalWolf