本文解決兩個問題
1. 使用adb logcat時,如何通過命令行關閉
2. 使用appium結合python實現android自動化時,如何正確的抓取Log
背景:
目前一直在做安卓自動化的東西,主要是針對項目迴歸測試用例進行實現。由於設計的用例,所撲捉的問題都是已經預估到的,對於未知的導致用例異常的行爲並未有很好的處理,所以嘗試將adb logcat與自動化結合。經驗尚淺,做一個嘗試,如果有朋友有更好的解決辦法,希望不吝賜教。
項目使用的是appium+python,設計了一套框架,基礎是python的unittest。
實現的時候,發現了文章初始提出的兩個問題。
解決方式:
問題一:使用adb logcat時,如何通過命令行關閉
1. os.system('taskkill /f /t /im cmd.exe') //這個方式比較暴力,將所有開啓的cmd都關閉了
2. os.system('adb kill-server') //這個關閉單個的adb,比較溫和,推薦使用
問題二:使用appium結合python實現android自動化時,如何正確的抓取Log
1. 使用subprocess.Popen('adb logcat ’,shell=True) //logcat後可以跟自己存儲的目錄
嘗試過直接使用 os.system('adb logcat'),但是執行後,測試套件裏的測試用例就不執行了,還未弄清楚原因,但推薦的方法是可以直接使用的。
由於對python子進程不是很瞭解,所以並未對其單獨進行關閉處理,而是通過直接關閉主進程來關閉它。
注意:
1. 抓log的初始行爲可以放在測試套件裏,但是關閉行爲必須放在主進程裏