我有一个ViewPager,一次只能在屏幕上显示一个片段。这个片段有一个recyclerView,它包含一个由一个图像和两个textView组成的列表项。我需要选择项目并根据显示的文本执行单击。
我的viewPage的标识为pager
,recyclelerView为listview
,我正在使用cardView小部件,该小部件的相对布局名为cardContainer
,其中包含textView nickNname
我感兴趣的是。
Espresso似乎只能识别pager
,但它无法在视图层次结构中找到任何其他ID。如何在viewPager或片段中访问nickName
或基本上任何其他视图?
我尝试了以下内容:
ViewInteraction listviewInteraction = onView (allOf(withId(R.id.pager)));
listviewInteraction.check(matches(hasDescendant(withId(R.id.listview))));
由于寻呼机没有任何孩子,我收到以下错误
Expected: has descendant: with id: 2131689666
Got: "ViewPager{id=2131689659, res-name=pager, visibility=VISIBLE, width=1080, height=1533, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=144.0, child-count=0}"
我还尝试了一些与发布here类似的方法,但Espresso无法找到listview
或nickname
。
如何找到视图nickName
?
我已经运行了一些测试,看起来当Espresso运行测试时,viewPager从不加载片段。我曾尝试使用Thread.sleep()
等待一段时间,但没有运气。我看到listView只填充了一段时间,然后寻呼机变为空白,测试失败,因为它找不到任何其他视图。有什么可能导致这个的想法吗?
寻呼机正常加载,但由于AmbiguousViewMatcherException,Espresso无法识别listview或cardContainer,只能识别寻呼机。 viewPager中有四个片段,但屏幕上只显示一个片段。我的代码如下:
ViewInteraction listviewInteraction = onView (allOf(withId(R.id.pager)));
listviewInteraction.check(matches(isDisplayed()));
onView(allOf(withId(R.id.listview), isDisplayed())).check(matches(isDisplayed()));
视图层次结构中有两个匹配项。如果我不在viewMatcher中使用isDisplayed()方法,那么我会得到四个匹配的四个片段。我该如何解决这个问题?
答案 0 :(得分:1)
即使它不可见,屏幕上显然还有一个列表视图。匹配器isDisplayed()
还会考虑屏幕外的视图。使用isCompletelyDisplayed()
修复了AmbiguousViewMatcherException
。