android – 如何使用Espresso测试在Tab Layout中选择特定的Tab位置

我有一个带有视图寻呼机的标签布局.我正在使用Espresso来测试我的Android应用.在我之前的项目中,我使用选项卡标题执行单击以选择选项卡位置,如下所示.

    Espresso.onView(ViewMatchers.withText("MAP"))
            .perform(ViewActions.click());

现在我有114个标签.所以我不能使用上面的方法随机选择这些标签进行测试.有什么方法可以根据它的位置选择标签.我已经检查了其他解决方案,但没有一个帮助我.

解决方法:

应该可以使用自定义ViewAction.像这样的东西:

fun selectTabAtPosition(tabIndex: Int): ViewAction {
    return object : ViewAction {
        override fun getDescription() = "with tab at index $tabIndex"

        override fun getConstraints() = allOf(isDisplayed(), isAssignableFrom(TabLayout::class.java))

        override fun perform(uiController: UiController, view: View) {
            val tabLayout = view as TabLayout
            val tabAtIndex: TabLayout.Tab = tabLayout.getTabAt(tabIndex)
                    ?: throw PerformException.Builder()
                            .withCause(Throwable("No tab at index $tabIndex"))
                            .build()

            tabAtIndex.select()
        }
    }
}

和用法:

onView(withId(R.id.tab_layout)).perform(selectTabAtPosition(99))
上一篇:命令行的Android模拟器具有奇怪的分辨率


下一篇:Android Espresso不会等待片段加载