PopupWindow$PopupViewContainer(@xxxxxxxx)
--ListPopupWindow$DropDownListView(@yyyyyyyy)
--RelativeLayout(@zzzzzzz)
ImageView
TextView
--RelativeLayout(@aaaaaaaa)
ImageView
TextView
--RelativeLayout(@aaaaaaaa)
ImageView
TextView
我想知道如何使用espresso android自动化访问RelativeLayout 2中的TextView,因为
@id
不存在,并且值是动态分配的。上面是下拉列表,我想单击第二个选择。
例如,当我们在任何搜索框中搜索项目时,我们都会填充列表。我想单击列表中的第二个。所有的元素ID都是动态的。
最佳答案
您也许可以做到
onData(anything())
.atPosition(1)
.perform(click());
但是,这仅假设一个适配器 View 。如果还有其他人,则需要以某种方式挑选
ListPopupWindow$DropDownListView
。我知道您说过所有ID都是动态的,但是是否有一些祖先 View 可以通过ID进行选择?如果是这样,您可以做类似的事情
onData(anything())
.inAdapterView(isDescendantOfA(withId(someAncestorId)))
.atPosition(1)
.perform(click());
作为最后的选择,我们可以在类名上进行匹配,但这有点脆弱:
onData(anything())
.inAdapterView(withClassName(equalTo(
"android.widget.ListPopupWindow$DropDownListView")))
.atPosition(1)
.perform(click());
关于android-espresso - 使用带有动态元素ID的espresso android进行DropDown值选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29438569/