Wie Teste ich die home-Taste auf der Action Bar mit Espresso?
Habe ich aktiviert die home-Taste, um zur vorherigen Ansicht zurückzukehren. Einfach, dies zu tun:
getActionBar().setDisplayHomeAsUpEnabled(true);
Ich bin mit der letzten version von com.android.support:appcompat-v7:21.0.2
. Jedoch, wenn ich den untenstehenden code, es funktioniert nicht werfen eine Ausnahme.
Espresso.onView(ViewMatchers.withId(android.R.id.home)).perform(ViewActions.click());
Espresso.onView(ViewMatchers.withId(R.id.home)).perform(ViewActions.click());
Ausnahme:
com.google.android.apps.common.testing.ui.espresso.NoMatchingViewException: No views in hierarchy found matching: with id: is <2131296261> ...
- Hmm, interessant. Ich benutze den gleichen code, um eine Aktion für home-Taste: onView(withId(android.R.id.Haus)).durchführen(klicken Sie auf()); Leider sind wir immer noch mit appcompat-v7:20.0.+. Vielleicht hat das etwas zu tun mit der neuen android-toolbar? Welche Id Sie abrufen, wenn Sie überprüfen Sie die anzeigen mit Android Monitor?
- Offenbar, es gibt keine id mit der neuen Android-Symbolleiste stattdessen verwenden wir "Navigieren" :(.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich folgenden workaround:
Im Grunde nutze ich das content-description-Attribut des view-id.
Es ist möglich, klicken Sie auf die Schaltfläche, wenn Sie die Beschreibung von Ressourcen.
Funktioniert gut mit appcompat-v7:23.1.1
R.string.abc_action_bar_up_description
ist privat und kann jederzeit geändert werden. Aber für den Augenblick war dies die beste option, die ich finden konnte.Antworte ich mir selbst. Nach dem post auf klicken Sie auf home-Symbol mit espresso, Es ist nicht möglich, an einem
Id
für den Home-button in der ActionBar, zumindest die version 7 von der Bibliothek Unterstützt, so sollten wir nutzen, "nach oben Navigieren". Aber warum?Dies ist der Grund, Dank der Espresso-Fehler-trace:
Ich wusste nicht, es war so ein großen Unterschied mit appCompat action-bar. Als Sie Jungs schrieb in den Kommentaren das "navigieren" funktioniert wirklich. Für diejenigen, die, wie ich selbst, konnte nicht damit rechnen, wie man es espresso, hier ist der Weg:
onView(withContentDescription("Navigate up")).perform(click());
Depracated für AppCompat v7
In meinem Projekt bin ich mit Robotium und Espresso zusammen. Für die home-Taste, klicken Sie auf ich verwende Robotiums
Solo#clickOnActionBarHomeButton
. Es ist mehr als 1 Zeile wie in klicken Sie auf home-Symbol mit espressoaber Sie nicht haben, um geben Sie die Titel. (Es kann nützlich sein, in einigen speziellen Fällen...). Sowieso ich entscheiden, welche zu verwenden, nach SDK-version:
Ist hier die Verwendung:
Muss es verpackt sein
runOnMainSync
da Robotium-Test-Frameworks ist etwas fauler, und wenn Sie behauptet, z.B. für action-bar Titel, direkt nach der Anweisung, es wird noch nicht zurück sein. Aber vielleicht versuchen Sie nur mitsolo.clickOnActionBarHomeButton();
. Könnte es wahrscheinlich für Sie arbeiten.