我在RelativeLayout中没有id的ListView。 你能告诉我如何使用android espresso测试框架找到它,然后单击具有特定文本的项目吗?
答案 0 :(得分:3)
您可能已经知道,Espresso支持Hamcrest匹配器,您已经使用Android测试支持库。
在这里你可以找到对它的引用:Hamcrest 1.3 Quick Reference以及所有可用的匹配器。
此外,每个视图可能至少包含其中一个元素id
,text
,content description
,因此在许多情况下,您可以使用withId
,{{1} },withText
匹配。
我不知道为什么你的withContentDescription
没有LinearLayout
,我认为为你的所有观点添加idis都是不错的做法,无论你不使用它们近来。
如果您的id
没有任何这些元素,但其父ListView
有,您可以编写如下代码:
RelativeLayout
如果我错了,onView(withParent(withId(R.id.relative_layout))).check(matches(isDisplayed()));
也没有任何这个元素寻找他的兄弟,他的后代像RelativeLayout
,它将是TextView
的孙子或找到它的祖先
如果您已找到它,请使用以下Hamcrest匹配器中的一个:LinearLayout
,withChild()
,withParent()
,hasSibling()
您的代码如下所示:
hasDescendant()
希望有所帮助
答案 1 :(得分:1)
代码适用于我:
onData(anything()).inAdapterView(allOf(withParent(withId(R.id.slider_layout)), instanceOf(ListView.class))).atPosition(drawerPosition).perform(click());