我们的应用程序中有一个视图寻呼机,当用户注销时,我们会显示相同的 UI。因此,由于视图寻呼机上每个页面的 UI 都相同,因此点击元素或检查它是否显示只会给我匹配多个错误。所以我的理论是,因为视图寻呼机一次加载所有内容,这就是我收到此错误的原因。更改内容描述符不起作用,因为它在所有视图中都是相同的。
该视图在未登录时为按钮,登录时将具有网格视图。
所以我的问题是 - 我如何到达按钮或我可能需要的任何元素?我无法更改应用程序代码。
使用浓缩咖啡 2.2.2
是的,问题是ViewPager
至少在当前可见View
的左侧和右侧创建了View
。Espresso 在层次结构中的每个View
上使用onView
中的所有匹配器,无论它是否在屏幕上。
如果当前只有您要匹配的Views
之一可见,请使用isDisplayed
匹配屏幕上当前显示的View
:
// Matches a view that is on the screen AND has the id R.id.some_button
onView(allOf(isDisplayed(), withId(R.string.some_id))).check(matches(isDisplayed()));
如果您在将View
与onView()
匹配后不check()
或perform()
,则测试不会失败!因此,如果您想检查View
是否可见,那么您也必须check(matches(isDisplayed()))
。