I am trying to click the home icon in some Espresso tests via:
onView(withId(android.R.id.home)).perform(click());
This works fine for Android > 3.0 - but fails for older versions as appcompat
does not seem to use this id for this element then. What is a good approach to do what I want to do?
Methods:
Add
onbackpress
in your activity, and use:I was having problems with "Navigate up" in an emulator, this worked for me:
To not depend on the app locale, you can use the code from Matt Logan by replacing "Navigate up" with R.string.abc_action_bar_up_description:
This helped me a lot because I have an app in more than 5 languages and I had to act like this.
To press back View:
I found a real solution to this issue. By using the hierarchyviewer I found that the toolbar looks like this:
This means we could match the hamburger icon (not back button) like this:
But a better solution to me was to find out that the hamburger icon is the only ImageButton and a direct child view of the v7 Toolbar. So I wrote a helper method to match it:
This solution is better because it should match the view no matter which locale you use in your test. :-)
EDIT: Note that Toolbar might be android.support.v7.widget.Toolbar or android.widget.Toolbar - depending on your use case!
EDIT: The support lib version 24.2.0 uses AppCompatImageButton instead of ImageButton, so I added it, too.
EDIT: You have to import the correct methods to get this to work. Here are the imports used: