Espresso - 单击 gridview 中的图像
Espresso - click an image inside a gridview
我有一个如下所示的视图层次结构:
GridView{id=2131362110, res-name=item_list_grid,
|
+----->RelativeLayout{id=2131362124, res-name=item_image_thumb_layout
|
+------------->ImageView{id=2131362125, res-name=item_image
|
+----->RelativeLayout{id=2131362124, res-name=item_image_thumb_layout
|
+------------->ImageView{id=2131362125, res-name=item_image
|
+------>RelativeLayout{id=2131362124, res-name=item_image_thumb_layout
|
+------------->ImageView{id=2131362125, res-name=item_image
|
GridView{id=2131362110, res-name=item_list_grid, ...etc
我想点击其中一个 id=item_image 的 ImageView。
我不能将 atPosition(x) 之类的东西与 onView 一起使用,所以我使用了 onData。我尝试了所有这些:
onData(allOf(anything(),withId(R.id.item_image))).atPosition(0).perform(click());
onData(anything()).atPosition(0).perform(click());
onData(allOf(atPosition(0),withId(R.id.item_image))).perform(click());
但所有的结果都是
android.support.test.espresso.AmbiguousViewMatcherException: 'is assignable from class: class android.widget.AdapterView' matches multiple views in the hierarchy.
对此有什么建议吗?谢谢!
您的错误消息告诉您 activity 中有多个扩展表单 AdapterView
的视图,因此您的布局中有另一个 ListView
或 GridView
。
您可以在数据层上 select 或 AdapterView
。所以 select 这个 AdapterView
带有 ItemModel
类型的项目
onData(is(instanceOf(ItemModel.class))).atPosition(0)
.onChildView(withId(R.id.item_image)).perform(click());
或者您可以通过 id
选择特定的 AdapterView
onData(anything()).inAdapterView(withId(R.id.my_grid_view)).atPosition(0).
onChildView(withId(R.id.item_image)).perform(click());
我有一个如下所示的视图层次结构:
GridView{id=2131362110, res-name=item_list_grid,
|
+----->RelativeLayout{id=2131362124, res-name=item_image_thumb_layout
|
+------------->ImageView{id=2131362125, res-name=item_image
|
+----->RelativeLayout{id=2131362124, res-name=item_image_thumb_layout
|
+------------->ImageView{id=2131362125, res-name=item_image
|
+------>RelativeLayout{id=2131362124, res-name=item_image_thumb_layout
|
+------------->ImageView{id=2131362125, res-name=item_image
|
GridView{id=2131362110, res-name=item_list_grid, ...etc
我想点击其中一个 id=item_image 的 ImageView。
我不能将 atPosition(x) 之类的东西与 onView 一起使用,所以我使用了 onData。我尝试了所有这些:
onData(allOf(anything(),withId(R.id.item_image))).atPosition(0).perform(click());
onData(anything()).atPosition(0).perform(click());
onData(allOf(atPosition(0),withId(R.id.item_image))).perform(click());
但所有的结果都是
android.support.test.espresso.AmbiguousViewMatcherException: 'is assignable from class: class android.widget.AdapterView' matches multiple views in the hierarchy.
对此有什么建议吗?谢谢!
您的错误消息告诉您 activity 中有多个扩展表单 AdapterView
的视图,因此您的布局中有另一个 ListView
或 GridView
。
您可以在数据层上 select 或 AdapterView
。所以 select 这个 AdapterView
带有 ItemModel
onData(is(instanceOf(ItemModel.class))).atPosition(0)
.onChildView(withId(R.id.item_image)).perform(click());
或者您可以通过 id
选择特定的AdapterView
onData(anything()).inAdapterView(withId(R.id.my_grid_view)).atPosition(0).
onChildView(withId(R.id.item_image)).perform(click());