我正在使用Monkeyrunner(自动化)在Android设备上测试应用程序(Samsung S2),由于它不允许我在屏幕上看到图像模式,我必须依赖adb logcat(使用Windows)查找特定消息,以便知道下一页何时加载了我的自动化脚本。
为了在logcat中查找特定(唯一)消息,对于我的monkeyrunner脚本,我必须清除所有adb日志,然后执行搜索。
有没有办法在logcat日志中只清除与特定标记,消息,文本或其他(!)匹配的行?而不是清除一切?
命令行adb功能是否允许您清除特定行,或者它是全有或全无的事情?
清除所有logcat longs的工作原理,但是只清除某些消息会很好,这样如果/当有应用程序崩溃,或者某些事件我需要详细信息进行故障排除时,我可以看到所有日志都领先崩溃(或重大事件)。因为如果一切都被清除了,我就无法看到logcat日志来解决问题。
:::更多信息:::
这是我目前用来清除所有日志的功能。
def clearAdb():
p = subprocess.Popen("adb logcat -v time", shell=True, cwd="C:\Users\<USERNAME>AppData\Local\Android\sdk\platform-tools", stdout=subprocess.PIPE)
subprocess.Popen("adb logcat -c", shell=True, cwd="C:\Users\<USERNAME>AppData\Local\Android\sdk\platform-tools", stdout=subprocess.PIPE)
print("::: ADB cleared :::")
..这里是我如何寻找logcat日志的一个例子。此adb函数会无限期地等待特定的adb消息,并在看到时进行处理。
def adb(message):
p = subprocess.Popen("adb logcat -v time", shell=True, cwd="C:\Users\<USERNAME>\AppData\Local\Android\sdk\platform-tools", stdout=subprocess.PIPE)
for line in p.stdout:
if message in line:
print("Got 'em")
break
else:
continue
...这就是我目前一起使用这些功能的方式......
clearAdb()
adb("identifyGamePackage. com.tfg.nameofapplication")
答案 0 :(得分:1)
要将logcat
输出限制为在特定时刻之后发生的消息,您不必清除日志。而是使用logcat -T <timestamp>
过滤器。支持的时间戳格式取决于Android版本 - 请参阅-T
输出中的logcat -h
段。