Android Espresso NoMatchingViewException

时间:2018-10-18 09:19:06

标签: android unit-testing android-espresso

我正在尝试新的Android测试库Espresso。 当我尝试时:

有趣的测试(){

     onView(
            allOf(withId(R.id.edDeliveryAndCase),
                    childAtPosition(
                            childAtPosition(
                                    withClassName(`is`("android.widget.LinearLayout")),
                                    1),
                            0),
                    isDisplayed()))
    .perform(click())

     onView(
            allOf(withId(R.id.edDeliveryAndCase),
                    childAtPosition(
                            childAtPosition(
                                    withClassName(`is`("android.widget.LinearLayout")),
                                    1),
                            0),
                    isDisplayed()))
    .perform(typeText("08400043880000166775"), closeSoftKeyboard())

     onView(
            allOf(withId(R.id.edDeliveryAndCase), withText("08400043880000166775"),
                    childAtPosition(
                            childAtPosition(
                                    withClassName(`is`("android.widget.LinearLayout")),
                                    1),
                            0),
                    isDisplayed()))
    .perform(pressImeActionButton())


    onView(
            allOf(withId(R.id.edPartNumber),
                    childAtPosition(childAtPosition(
                                    withClassName(`is`("android.support.v7.widget.CardView")),
                                    0),
                            0),
                    isDisplayed()))
    .perform(typeText("NBL-004"), closeSoftKeyboard())

    onView(
            allOf(withId(R.id.edPartNumber), withText("NBL-004"),
                    childAtPosition(
                            childAtPosition(
                                    withClassName(`is`("android.support.v7.widget.CardView")),
                                    0),
                            0),
                    isDisplayed()))
    .perform(pressImeActionButton())


    onView(
            allOf(withId(R.id.edAcceptQty),
                    childAtPosition(
                            childAtPosition(
                                    withClassName(`is`("android.widget.LinearLayout")),
                                    1),
                            0),
                    isDisplayed()))
    .perform(replaceText("5"), closeSoftKeyboard())

     onView(
            allOf(withId(R.id.edAcceptQty), withText("5"),
                    childAtPosition(
                            childAtPosition(
                                    withClassName(`is`("android.widget.LinearLayout")),
                                    1),
                            0),
                    isDisplayed()))
    .perform(pressImeActionButton())

}

private fun childAtPosition(
        parentMatcher: Matcher<View>, position: Int): Matcher<View> {

    return object : TypeSafeMatcher<View>() {
        override fun describeTo(description: Description) {
            description.appendText("Child at position $position in parent ")
            parentMatcher.describeTo(description)
        }

        public override fun matchesSafely(view: View): Boolean {
            val parent = view.parent
            return (parent is ViewGroup && parentMatcher.matches(parent)
                    && view == parent.getChildAt(position))
        }
    }
}

我得到一个错误:

android.support.test.espresso.NoMatchingViewException: 找不到层次结构中符合以下条件的视图: (其ID:com.unitedtractors.warehouse.dev:id/edPartNumber和Child的父级位置0,Child父级的位置0上,其类名称为: 是“ android.support.v7.widget.CardView”,并在屏幕上显示给用户)

有什么想法吗?

0 个答案:

没有答案
相关问题