Espresso:如何通过索引获取View的子项

时间:2016-07-25 11:44:32

标签: android android-espresso

我有一个包含EditText的视图,我想确保它们以正确的顺序显示。我使用Espresso但我不知道如何通过索引获取视图的孩子。这是一种方法吗?

1 个答案:

答案 0 :(得分:0)

我终于找到了答案here。 我们的想法是创建一个新的Matcher。 这是一种更好的方法,直接使用Espresso而不创建匹配器吗?

public static Matcher<View> nthChildOf(final Matcher<View> parentMatcher, final int childPosition) {
    return new TypeSafeMatcher<View>() {
        @Override
        public void describeTo(Description description) {
            description.appendText("position " + childPosition + " of parent ");
            parentMatcher.describeTo(description);
        }

        @Override
        public boolean matchesSafely(View view) {
            if (!(view.getParent() instanceof ViewGroup)) return false;
            ViewGroup parent = (ViewGroup) view.getParent();

            return parentMatcher.matches(parent)
                    && parent.getChildCount() > childPosition
                    && parent.getChildAt(childPosition).equals(view);
        }
    };
}