当前位置: 首页 > 知识库问答 >
问题:

如何使用espresso滚动到RecycerView-Item的子级

罗翔
2023-03-14
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)))

共有1个答案

颜霖
2023-03-14

当单击比我的屏幕大一倍的RecycerView项内的视图时,以下解决方案适用于我。注意:我点击的视图实际上是在屏幕外的,但由于它在视图层次结构中,所以可以点击它。

创建自定义ViewAction:

private fun clickChildViewWithId(id: Int) = object : ViewAction {

    override fun getConstraints() = null

    override fun getDescription() = "click child view with id $id"

    override fun perform(uiController: UiController, view: View) {
        val v = view.findViewById<View>(id)
        v.performClick()
    }
}

用法:

onView(withId(R.id.recycler_view))
            .perform(actionOnItemAtPosition<MyViewHolder>(0, clickChildViewWithId(R.id.target_button)))
 类似资料:
  • 我还看到了如下代码块: 但我不确定如何操纵来获得计数

  • 我创建了基于创建列表和卡片指南的RecolyerView示例。我的适配器有一个模式实现,只用于扩展布局。 问题是滚动性能不佳。这在一个只有8个项目的RecycleView中。 在一些测试中,我验证了在Android L中不会出现这个问题。但在KitKat版本中,性能的下降是明显的。

  • 我有,它有分页,当我滚动一些时候,它正在崩溃。当我慢慢滚动时,它没有崩溃。我已经提供了适配器和活动代码。请让我知道我在这里做错了什么。我已经搜索了相同的问题,但无法在此处捕获错误。 显示某些错误(日志):

  • 问题内容: 我想在水平滚动的div中显示许多记录。我正在使用Twitter Bootstrap,并设置了一个div行,每个数据记录均表示为一列。 如果我需要为此部分转储Bootstrap网格,那很好,我怀疑它不是按照设计的方式真正使用它…如果我不打算将Twitter Bootstrap用于此部分,那么我的问题几乎与[防止浮动div换行。该问题的可接受答案的问题在于,它假定您可以计算容器的总宽度。在

  • 问题内容: 如何使Selenium WebDriver滚动到特定元素以使其显示在屏幕上。我尝试了很多不同的选择,但是没有运气。这在c#绑定中不起作用吗? 我可以使它跳到特定的位置, 但是我希望能够将其发送到不同的元素,而不必每次都给出确切的位置。 例1) 例2) 当我观看它时,它不会将页面跳到该元素,并且异常与不在屏幕上的元素匹配。 更新:我添加了bool ex = Example.Exists(