Espresso:如何在布局中按类型查找孩子?

时间:2015-12-22 23:50:28

标签: android android-espresso

我在RelativeLayout中没有id的ListView。 你能告诉我如何使用android espresso测试框架找到它,然后单击具有特定文本的项目吗?

2 个答案:

答案 0 :(得分:3)

您可能已经知道,Espresso支持Hamcrest匹配器,您已经使用Android测试支持库。

在这里你可以找到对它的引用:Hamcrest 1.3 Quick Reference以及所有可用的匹配器。

此外,每个视图可能至少包含其中一个元素idtextcontent description,因此在许多情况下,您可以使用withId,{{1} },withText匹配。

我不知道为什么你的withContentDescription没有LinearLayout,我认为为你的所有观点添加idis都是不错的做法,无论你不使用它们近来。

如果您的id没有任何这些元素,但其父ListView有,您可以编写如下代码:

RelativeLayout

如果我错了,onView(withParent(withId(R.id.relative_layout))).check(matches(isDisplayed())); 也没有任何这个元素寻找他的兄弟,他的后代像RelativeLayout,它将是TextView的孙子或找到它的祖先

如果您已找到它,请使用以下Hamcrest匹配器中的一个:LinearLayoutwithChild()withParent()hasSibling()

您的代码如下所示:

hasDescendant()

希望有所帮助

答案 1 :(得分:1)

代码适用于我:

onData(anything()).inAdapterView(allOf(withParent(withId(R.id.slider_layout)), instanceOf(ListView.class))).atPosition(drawerPosition).perform(click());