我们的应用中有一个View Pager,当用户退出时,我们会显示相同的用户界面。因此,对于视图寻呼机上的每个页面的UI是相同的,点击一个元素或检查它是否显示只是给我匹配多个错误。所以我的理论是因为查看寻呼机一次加载所有内容,这就是我得到这个错误的原因。更改contentDescriptor并不起作用,因为它在所有视图中都是相同的。
未登录时视图为按钮,登录后视图将显示网格视图。
所以我的问题是 - 如何获得按钮或我可能需要的任何元素?我无法更改应用代码。
使用Espresso 2.2.2
答案 0 :(得分:0)
是的,问题是ViewPager
至少在当前可见View
的左侧和右侧创建View
。 Espresso使用层次结构中每个onView
的{{1}}中的所有匹配器,无论它是否在屏幕上。
如果您要匹配的View
中只有一个当前可见,请使用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()));
与check()
匹配后没有perform()
或View
,那么 会失败!因此,如果您想检查onView()
是否可见,那么您也必须View
。