ベストアンサーの中に、最初のページ内の子Viewに対するMatcherが載っていますので、これに汎用性をもたせただけです。
public class MatcherUtil {
@NonNull
public static Matcher<View> ViewPagerMatcher(final Matcher<View> parentMatcher, final int index) {
return new TypeSafeMatcher<View>() {
@Override
protected boolean matchesSafely(View view) {
if (!(view.getParent() instanceof ViewPager)) {
return parentMatcher.matches(view.getParent());
}
ViewPager pager = (ViewPager) view.getParent();
return parentMatcher.matches(view.getParent()) && pager.getChildAt(index).equals(view);
}
@Override
public void describeTo(Description description) {
}
};
}
}
例:buttonというIDをもつViewがViewPager内1ページ目に存在するか
onView(allOf(withId(R.id.button), isDescendantOfA(ViewPagerMatcher(withId(R.id.pager), 0)))).check(matches(notNullValue()));