本文解决两个问题
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的初始行为可以放在测试套件里,但是关闭行为必须放在主进程里