我有一个带有视图寻呼机的标签布局.我正在使用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))