espresso onData匹配层次结构中的多个视图?

时间:2016-05-13 07:10:33

标签: android android-espresso

我正在使用浓缩咖啡测试应用。这个应用程序有2个ListViews,espresso onData 函数找到两个ListView但它们有不同的ID。

代码:

onData(withId(R.id.order_jijia_listview)).perform(ViewActions.click());

结果:

ListView{id=2131493579, res-name=order_jijia_listview, visibility=VISIBLE, width=768,
            height=659, has-focus=false, has-focusable=true, has-window-focus=true, 
            is-clickable=true, 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=345.0, child-count=7} ****MATCHES****

ListView{id=2131493586, res-name=order_jijia_pop_listview, visibility=VISIBLE, width=0,
            height=0, has-focus=false, has-focusable=false, has-window-focus=true, 
            is-clickable=true, is-enabled=true, is-focused=false, is-focusable=false, 
            is-layout-requested=true, is-selected=false, root-is-layout-requested=false, 
            has-input-connection=false, x=0.0, y=0.0, child-count=0}

1 个答案:

答案 0 :(得分:0)

第二个ListView未标记为****MATCHES****,因此问题不存在。

您应该仅将onData用于ListView元素,而不是ListView本身。 要查找ListView,您需要使用onView

onView(withId(R.id.order_jijia_listview)).perform(ViewActions.click());

你想要达到什么目的?点击列表元素? 因此,您需要将onData与复杂匹配器一起使用:

onData(allOf(is(instanceOf(String.class)), is("Americano"))).perform(click());

您可以在official espresso tutorial中详细了解onDataonView