0

Ich habe eine Schaltfläche in meiner App, die beim Klicken - öffnet Dropbox Login-Seite auf Chrom. Ich versuche, auf die Ansichten in diesem geöffneten Chromfenster zuzugreifen, um die Felder auszufüllen und fortzufahren. Da diese Aktivität jedoch nicht zu meiner Anwendung gehört, befinden sich die Ansichten nicht in der Hierarchiebaumstruktur.Espresso android Automatisierungstests - Wie Zugriff auf Ansichten anderer Anwendung, geöffnet von meiner Anwendung?

Wer weiß, wie man mit Espresso auf externe Anwendungsansichten zugreift?

Ich habe es schon mit "UI-Automator" und "Espresso-Web" versucht, aber ohne Erfolg.

+0

[Espresso - Testoberfläche für mehrere Apps] (https://developer.android.com/training/testing/ui-testing/uiautomator-testing.html) –

Antwort

0

Android unterstützt mehrere Fenster. Normalerweise ist dies für die Benutzer und den App-Entwickler transparent (Wortspiel beabsichtigt), in bestimmten Fällen sind jedoch mehrere Fenster sichtbar (z. B. wird ein Fenster zum automatischen Vervollständigen über das Hauptanwendungsfenster im Such-Widget gezeichnet). Um Ihr Leben zu vereinfachen, verwendet Espresso standardmäßig eine Heuristik, um zu erraten, mit welchem ​​Fenster Sie interagieren möchten. Diese Heuristik ist fast immer "gut genug"; In seltenen Fällen müssen Sie jedoch angeben, auf welches Fenster eine Interaktion ausgerichtet werden soll. Sie können dies tun, indem Sie Ihren eigenen Root-Fenster (aka Root) -Matcher bereitstellen: z. Wenn Sie auf ein Pop-up mit "OK" und "Abbrechen" klicken möchten, können Sie Espresso wie folgt verwenden.

onView(withText("OK")).inRoot(withDecorView(not(is(getActivity().getWindow().getDecorView())))).perform(click()); 

Ein weiteres Beispiel ist Espresso Intents zu verwenden: Zum Beispiel: Benutzeraktion, die in einer externen „Telefon“ Aktivität führt, wie Clicked von Ihrer eigenen App auf dem Ruftaste ins Leben gerufen, und Sie können mit Hilfe überprüfen:

androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.2' 

user.clickOnView(system.getView(R.id.callButton)); 
intended(toPackage("com.android.phone")); 

Werfen Sie einen Blick auf verschiedene Beispiele auf erwähnt: Official Google Android Test Forum

Verwandte Themen