私はMonkeyrunner(オートメーション)を使ってAndroidデバイス(Samsung S2)でアプリをテストしています。画面上に画像パターンが表示されないため、adb logcat(Windowsを使用)を使用して次のページがオートメーションスクリプト用に読み込まれたときを知るために特定のメッセージを探します。adb logcatですべてのメッセージを消去する代わりに、指定したメッセージまたは行を消去できますか?
そして、私のmonkeyrunnerスクリプトのために、logcatで特定の(ユニークな)メッセージを探すために、すべてのadbログをクリアしてから検索を実行する必要があります。
logcatログ内の特定のタグ、メッセージ、テキスト、その他の文字(!)に一致する行だけを消去する方法はありますか?すべてを消去する代わりに?
コマンドラインのadb機能によって、特定の行を消去することができますか、それともまったくないのでしょうか?
すべてのlogcat longをクリアすることはできますが、アプリクラッシュが発生した場合やトラブルシューティングの詳細が必要なイベントが発生した場合は、すべてのログを見ることができますクラッシュ(または重大なイベント)につながる。すべてがクリアされていれば、トラブルを解決するために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
...そしてこれは私が現在、ある瞬間の後にログをクリアする必要はありませんが起こったメッセージにlogcat
出力を制限するには...一緒に
clearAdb()
adb("identifyGamePackage. com.tfg.nameofapplication")
なぜログをクリアする必要があると思いますか? –
私のオートメーションスクリプトには多くのループがあり、同じlogcatメッセージを何回か再利用する必要があります。また、以前に使用したメッセージが再度検索されるまでにクリアされなければ、スクリプトは間違って最初にlogcatメッセージが表示され、次のアクションに早期に移行します。 – JordanViaComputer
スクリプトを変更して、メッセージの適切なインスタンスを見つけてください。あなたはそれを行うためにログをクリアする必要はありません –