Espresso:点击位置未知的 Recycler 视图
Espresso: Clicking on Recycler view with unknown position
如果回收者在屏幕中的不同位置查看,我有一个列表。
喜欢下面
- 我想根据其中的变量文本'Job#'点击特定的回收站视图。
- 但无法执行相同的操作,因为我不知道我应该点击的确切位置。
recycler视图的位置不断变化。尝试了下面的代码,但它点击了静态位置“6”
recyclerView = onView(
allOf(withId(R.id.recycler_view), isDisplayed()));
recyclerView.perform(actionOnItemAtPosition(6, click()));
我想知道动态的正确位置
在我看来,单击仪器测试中的位置是一种不好的做法,因为它会导致不确定的测试。这适用于 RecyclerView
和 AdapterView
。
因此,为了不依赖某个位置,您需要一个 itemView
匹配器来执行您的 recyclerview 操作。
ItemView 匹配器是匹配ViewHolder
的itemview 的视图匹配器。在您的情况下,您需要匹配包含突出显示 RelativeLayout
的 LinearLayout
,它可以表示为 hasDescendant(withText("Job 109"))
您的最终解决方案应如下所示:
onView(allOf(withId(R.id.recycler_view),isDisplayed())).perform(Recyclerview actions.actionOnItem(hasDescendant(withText("Job 109")), click()));
如果回收者在屏幕中的不同位置查看,我有一个列表。
喜欢下面
- 我想根据其中的变量文本'Job#'点击特定的回收站视图。
- 但无法执行相同的操作,因为我不知道我应该点击的确切位置。
recycler视图的位置不断变化。尝试了下面的代码,但它点击了静态位置“6”
recyclerView = onView( allOf(withId(R.id.recycler_view), isDisplayed())); recyclerView.perform(actionOnItemAtPosition(6, click()));
我想知道动态的正确位置
在我看来,单击仪器测试中的位置是一种不好的做法,因为它会导致不确定的测试。这适用于 RecyclerView
和 AdapterView
。
因此,为了不依赖某个位置,您需要一个 itemView
匹配器来执行您的 recyclerview 操作。
ItemView 匹配器是匹配ViewHolder
的itemview 的视图匹配器。在您的情况下,您需要匹配包含突出显示 RelativeLayout
的 LinearLayout
,它可以表示为 hasDescendant(withText("Job 109"))
您的最终解决方案应如下所示:
onView(allOf(withId(R.id.recycler_view),isDisplayed())).perform(Recyclerview actions.actionOnItem(hasDescendant(withText("Job 109")), click()));