2017-07-31 7 views
0

私は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") 
+0

なぜログをクリアする必要があると思いますか? –

+0

私のオートメーションスクリプトには多くのループがあり、同じlogcatメッセージを何回か再利用する必要があります。また、以前に使用したメッセージが再度検索されるまでにクリアされなければ、スクリプトは間違って最初にlogcatメッセージが表示され、次のアクションに早期に移行します。 – JordanViaComputer

+0

スクリプトを変更して、メッセージの適切なインスタンスを見つけてください。あなたはそれを行うためにログをクリアする必要はありません –

答えて

0

を関数を使用する方法です。代わりにlogcat -T <timestamp>フィルタを使用してください。 タイムスタンプの形式は、Androidのバージョンに応じて異なります。-Tの段落logcat -hの出力を参照してください。

+0

あなたが話していることの例を挙げることができますか? – JordanViaComputer

+0

私はこの "adb shell echo $ EPOCHREALTIME"を1行で行いましたが、この直後に "adb logcat -T $ EPOCHREALTIME"を実行しましたが、次のエラーメッセージが表示されます: "%EPORTABLE"でなく "%m-%d %H:%M:%S%q "の時刻形式。このコマンドは特定の日時を設定しないだけでなく、間違った形式になっています。少しだけ拡大していただけますか? – JordanViaComputer

+0

エラーメッセージは非常に明確です。あなたのデバイスはかなり古く、エポック形式のlogcatタイムスタンプをサポートしていません。したがって、サポートする形式を使用してください。 –

関連する問題