Gre*_*ion 3 android android-gridview android-espresso
我有一个视图层次结构如下:
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
Run Code Online (Sandbox Code Playgroud)
我想点击其中一个带有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());
Run Code Online (Sandbox Code Playgroud)
但所有结果都是
android.support.test.espresso.AmbiguousViewMatcherException: 'is assignable from class: class android.widget.AdapterView' matches multiple views in the hierarchy.
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?谢谢!
Dav*_*oho 20
您的错误消息告诉您在您的活动中有多个视图,这些视图扩展了表单,AdapterView因此您有另一个ListView或GridView在您的布局中.
您可以选择AdapterView数据层.所以选择这个AdapterView类型的项目ItemModel
onData(is(instanceOf(ItemModel.class))).atPosition(0)
.onChildView(withId(R.id.item_image)).perform(click());
Run Code Online (Sandbox Code Playgroud)
或者您可以AdapterView按ID 选择特定的
onData(anything()).inAdapterView(withId(R.id.my_grid_view)).atPosition(0).
onChildView(withId(R.id.item_image)).perform(click());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4685 次 |
| 最近记录: |