android - Espresso - 单击 gridview 中的图像

标签 android android-gridview android-espresso

我有一个如下所示的 View 层次结构:

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 的 View ,因此您的布局中有另一个 ListViewGridView

您可以选择数据层上的 AdapterView。因此,选择此 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());

关于android - Espresso - 单击 gridview 中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28067738/

相关文章:

android - 循环内的 OnClickListener 抛出 IndexOutOfBounds 异常

android - (DAGGER-ANDROID) 不能在 Espresso 测试中使用 @Inject 并且不能使用 mockWebServer

android - 使用 Espresso 测试 Android PreferenceFragment

android - Android Studio 2.2 中的 Espresso 测试录制功能

Android:如何在 xml 中平衡 GridLayout

android - Qt/C++/Android - 如何以编程方式安装 .APK 文件?

android - CheckSelfPermission 始终返回 PERMISSION_GRANTED 即使针对 SDK 23

java - 将 android 库导出为 .jar 文件

java - gridview 重复显示同一张图片

android获取gridview中被点击项的位置