Android-Espresso:无法在ViewPager中获取元素

时间:2016-07-08 21:10:53

标签: android android-testing android-espresso

我们的应用中有一个View Pager,当用户退出时,我们会显示相同的用户界面。因此,对于视图寻呼机上的每个页面的UI是相同的,点击一个元素或检查它是否显示只是给我匹配多个错误。所以我的理论是因为查看寻呼机一次加载所有内容,这就是我得到这个错误的原因。更改contentDescriptor并不起作用,因为它在所有视图中都是相同的。

未登录时视图为按钮,登录后视图将显示网格视图。

所以我的问题是 - 如何获得按钮或我可能需要的任何元素?我无法更改应用代码。

使用Espresso 2.2.2

1 个答案:

答案 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