【发布时间】:2019-02-15 09:09:46
【问题描述】:
我正在为我的应用程序编写浓缩咖啡测试。对于一项测试,我必须单击 RecyclerView-Item 上的按钮。所说的项目比屏幕大,所以当我滚动到项目时,所需的按钮仍然没有显示(这是必需的,所以我可以点击它)。
我试图滚动到视图
onView(withId(R.id.recycler_view)).perform(scrollTo<MyViewHolder>(hasDescendant(withId(R.id.target_button))))
但这只是滚动到包含按钮的项目的顶部。由于该按钮位于该项目的最底部并且该项目大于屏幕,因此当我尝试单击该按钮时,我得到了
Action will not be performed because the target view does not match one or more of the following constraints:
at least 90 percent of the view's area is displayed to the user.
我也试过
onView(withId(R.id.recycler_view)).perform(actionOnItemAtPosition<MyViewHolder>(0, EspressoUtils.clickChildViewWithId(R.id.target_button)))
其中EspressoUtils.clickChildViewWithId(id: Int) 是this 问题的已接受答案中描述的内容。这也产生了同样的错误。如何滚动到 RecyclerView-Item 中的特定子项?
【问题讨论】:
-
您知道要滚动到的回收站视图中项目的文本吗?
-
RecyclerView里面的Item包含多个view,包括我要点击的那个。在这种情况下,我只知道我要点击的视图的文本。
-
你能检查这个链接stackoverflow.com/questions/42915073/…它告诉如何滚动到一个位置然后你可以看到这个链接stackoverflow.com/questions/31394569/…
-
这两个问题都涉及项目,如果它们被滚动到,则适合屏幕。如果我滚动到我的项目,它的下部仍然不显示,因为项目比屏幕大。我的问题是如何让项目的下半部分显示出来。
-
在你的问题中,你说,“......当我尝试点击我得到的按钮时”但你没有提供你如何尝试的代码。顺便说一句,最好将
EspressoUtils.clickChildViewWithId的代码添加到您的问题中,即使您提供了链接。
标签: android android-recyclerview android-espresso