UiAutomator getLastTraversedText ()

8

Ich habe versucht, ein Android Webview mit Android UiAutomator zu testen. Wie ich die Dokumentation verstehe, würde das Scrollen durch ein WebvView UI-Traversal-Ereignisse generieren sollte über getUiDevice().getLastTraversedText().

lesbar sein

Wenn ich jedoch getUiDevice().pressDPadDown() zum Scrollen durch eine Webansicht verwende, gibt getUiDevice().getLastTraversedText() immer null zurück.

Was habe ich verpasst?

Wenn jemand diesen Anruf zur Arbeit bekommen hat, würde ich ein kurzes Codebeispiel sehr schätzen.

    
Micha 27.02.2013, 11:31
quelle

1 Antwort

4

Schlechte Neuigkeiten: Ich habe mehrere Stunden damit verbracht, herauszufinden, wie das funktionieren kann, aber ich habe noch nichts anderes als null als Antwort auf die Aufrufe von getUiDevice().getLastTraversedText() bekommen.

Hier sind die Dinge, die ich versucht und entdeckt habe:

  • das Ausführen von uiautomator events in einem adb shell sollte alle Accessibility Events ablegen. Es meldet zwar verschiedene Ereignisse, ist jedoch praktisch geräuschlos, wenn ich manuell durch den Inhalt eines WebView blättern muss. Wenn der Inhalt in der WebView gescrollt wird, z. Nach dem Navigieren nach oben oder unten über das, was auf dem Bildschirm angezeigt wird, bekomme ich die folgende Art von Ereignis gemeldet:

03-10 19:44:47.436 EventType: TYPE_VIEW_SCROLLED; EventTime: 911700; PackageName: com.example.simplewebview; MovementGranularity: 0; Action: 0 [ ClassName: android.webkit.WebView; Text: []; ContentDescription: null; ItemCount: -1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: false; Scrollable: true; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: 0; ScrollY: 270; MaxScrollX: 0; MaxScrollY: 544; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0

  • Wenn ich die Zugriffseinstellung für die Suche nach Zugriffen aktiviere, kann ich den iiautomator nicht in adb shell verwenden. Jedes Mal, wenn ich einen Befehl iiautomator ausführe, erhalte ich eine Antwort von Killed . Ich habe Explore-By-Touch verwendet, um den angezeigten Text zu sprechen. Obwohl ich nicht zu allen Links navigieren konnte, die mit Explore-By-Touch aktiviert waren (oder mit dem nervenden Virtual D-Pad, das Teil der Android Accessibility Suite ist), hat es den LinkText für einige Links ausgelesen ( zB hat es die japanischen Zeichen auf der Seite übersprungen, die ich zum Testen von Ссылка verwendet habe

  • Wenn ich ein ähnliches Skript wie Ihres ausführe (für eine einfache WebView App, die ich für diesen Zweck erstellt habe), kann ich die Benutzeroberfläche im WebView verschiedene Elemente hervorheben, in meinem Fall Weblinks von der folgenden Webseite hat aus anderen Gründen zu dem Zeitpunkt ermittelt Ссылка Der Hintergrund des aktuell ausgewählten Links wird hellblau angezeigt, es wird jedoch kein Text vom Aufruf an% zurückgegeben co_de%

Meine beste Vermutung ist, dass wir entweder versuchen, die Methode unangemessen zu verwenden. Vielleicht sollten wir das DOM von WebView anfordern und analysieren (goodness know how), aber sehen Sie sich den folgenden Kommentar aus der Dokumentation von getLastTraversedText () an

getUiDevice().getLastTraversedText()

BTW: Ich teste mit Android 4.2.2 auf physischen Geräten.

Viel Glück bei Ihren Nachforschungen. Ich werde mich von Zeit zu Zeit mit dem Problem beschäftigen, um mehr über die Eignung und Fähigkeiten von Ui Automator zu erfahren.

Update (26. März 2013): Ich habe erneut getestet, ob "Barrierefreiheit verbessern" im Menü "Eingabehilfeneinstellung" des Geräts auf "Zulässig" eingestellt ist. Ich bekomme immer noch null von When the view control used can return a reference to is Document Object Model, it is recommended then to use the view's DOM instead.

Hier ist der Kern meines Testcodes:

Öffentliche Klasse WebViewNavigator erweitert UiAutomatorTestCase {

%Vor%

}

Und hier ist der adb-Befehl, den ich verwende, um die Nachrichten zu sehen, wenn dieser Code auf dem Android-Gerät ausgeführt wird: getLastTraversedText()

Gefolgt von der Ausgabe:

%Vor%     
JulianHarty 10.03.2013 19:57
quelle