Вы можете попробовать создать пользовательский Matcher<View>
:
public static Matcher<View> hasItem(Matcher<View> matcher) {
return new BoundedMatcher<View, RecyclerView>(RecyclerView.class) {
@Override public void describeTo(Description description) {
description.appendText("has item: ");
matcher.describeTo(description);
}
@Override protected boolean matchesSafely(RecyclerView view) {
RecyclerView.Adapter adapter = view.getAdapter();
for (int position = 0; position < adapter.getItemCount(); position++) {
int type = adapter.getItemViewType(position);
RecyclerView.ViewHolder holder = adapter.createViewHolder(view, type);
adapter.onBindViewHolder(holder, position);
if (matcher.matches(holder.itemView)) {
return true;
}
}
return false;
}
};
}
Затем вы можете сделать:
onView(withId(...)).check(matches(hasItem(hasDescendant(withText(...)))))
Или, если вы не хотите настраивать сопоставление, вы также можетеиспользуйте RecyclerViewActions.scrollTo () :
onView(withId(...)).perform(scrollTo(hasDescendant(withText(...))))