在TabLayout下执行对TabText的单击始终提供NoMatchingViewException

时间:2019-07-31 08:14:00

标签: android android-espresso

我想使用espresso点击我的一个标签页

<com.google.android.material.tabs.TabLayout
        android:id="@+id/tabs"
        ...>
        <com.google.android.material.tabs.TabItem
            android:id="@+id/tabItem"
            android:text="Tab1" />

        <com.google.android.material.tabs.TabItem
            android:id="@+id/tabItem2"
            android:text="Tab2" />
    </com.google.android.material.tabs.TabLayout>

我尝试断言isDisplayed()是否是

onView(allOf(withId(R.id.tabs), withText("Tab2"), isDescendantOfA(withId(R.id.container)), isDisplayed()));

但是当我尝试单击文本时,它导致NoMatchingViewException

onView(allOf(withId(R.id.tabs), withText("Tab2"), isDescendantOfA(withId(R.id.container)), isDisplayed())).perform(click());

我尝试将其放在不同的行中,

1. check if displayed
2. perform click

我们如何使用espresso成功单击viewPager下的tabtext?

尝试使用标签ID,但结果仍然相同。 使用viewTag的建议不起作用

1 个答案:

答案 0 :(得分:0)

尝试一下:

onView(allOf(withText("Tab2"), isDescendantOfA(withId(R.id.tabs)))).perform(click());

由于文本为withText("Tab2")的视图没有ID withId(R.id.tabs)(因为其父级是具有该ID的视图),所以这就是为什么您获得NoMatchingViewException