2016-06-03 8 views
0

Ich habe an einem Java-Test-Framework gearbeitet und endete mit dem Testen einer Android-Anwendung, die eine Menge Toast-Nachrichten tut.ADB Shell Get Toast Nachrichten

Das Problem ist das Framework verwendet nichts anderes als ADB und ich kann keine zusätzlichen Bibliotheken verwenden.

so Gibt es eine Möglichkeit, die getoastete Nachricht von einer Anwendung über adb zu bekommen? Ich hätte nichts dagegen, hunderte von Zeilen für diese allein zu schreiben.

Antwort

1

Sie können toast Nachrichten über Ereignisse mit adb shell uiautomator events von der Kommandozeile aus überprüfen. Innerhalb Ihres Java-Test-Framework, können Sie jedoch ein Verfahren zur Wiederverwendung von Code erstellen, der diesen Befehl ausführt und analysiert es für was auch immer Zeichenfolge Sie es mit einem Try-Block als solche vergleichen wollen:

try { 
     Process process = Runtime.getRuntime().exec("uiautomator events"); 
     BufferedReader bufferedReader = new BufferedReader(
       new InputStreamReader(process.getInputStream())); 

     StringBuilder log=new StringBuilder(); 
     String toastMessage; 
     while ((toastMessage = bufferedReader.readLine()) != null) { 
      log.append(toastMessage).append("\n"); 

     if (toastMessage.contains(myToastStringVar)) { 
       Log.i("ToastMessageMatcher", "" // <-- your info message); 
      } else { 
       Log.e("ToastMessageMatcher", "" // <-- your error message); 
      } 
     } 
     bufferedReader.close(); 
     process.waitFor(); 
     System.out.println(log.toString()); 
    } catch (IOException | InterruptedException e) { 
     e.printStackTrace(); 
    } 

Dies kann ebenfalls sein direkt in Ihren Derivaten auch.

+0

Ich habe das zuvor versucht und festgestellt, dass es nicht die Nachricht in Toast angezeigt zeigt, habe ich mein Framework Tesseract OCR verwenden, um Screenshots zu verifizieren und jetzt funktioniert es gut in 97% der Zeit. Ich habe auch festgestellt, dass das Aufrufen von UIautomator Apps abstürzt, die Einstellungen für die Barrierefreiheit verwenden, sodass mein Plan, eine App zu erstellen, die die Toast-Nachricht von dort liest, ebenfalls fehlgeschlagen ist. Danke für die Antwort, Es kann jemand anderem helfen –