【问题标题】:Espresso: Clicking on Recycler view with unknown position浓缩咖啡:单击位置未知的回收站视图
【发布时间】:2016-09-22 15:07:12
【问题描述】:

如果回收站在屏幕的不同位置查看,我有一个列表。 像下面

  • 我想根据里面的变量文本“Job#”点击特定的回收站视图。
  • 但不能执行相同的操作,因为我不知道应该点击的确切位置。
  • 回收站视图的位置不断变化。尝试下面的代码,但它点击静态位置'6'

    recyclerView = onView( allOf(withId(R.id.recycler_view), isDisplayed())); recyclerView.perform(actionOnItemAtPosition(6, click()));

我想动态知道正确的位置。

【问题讨论】:

    标签: user-interface automated-tests ui-automation android-espresso


    【解决方案1】:

    在我看来,单击仪器测试中的位置是一种不好的做法,因为它会导致非确定性测试。这适用于RecyclerViewAdapterView

    因此,为了不依赖某个位置,您需要一个 itemView 匹配器来执行 recyclerview 操作。

    ItemView 匹配器是一个与ViewHolder 的itemview 匹配的视图匹配器。在您的情况下,您需要匹配一个包含突出显示的RelativeLayoutLinearLayout,它可以表示为hasDescendant(withText("Job 109"))

    您的最终解决方案应如下所示:

    onView(allOf(withId(R.id.recycler_view),isDisplayed())).perform(Recyclerview actions.actionOnItem(hasDescendant(withText("Job 109")), click()));

    【讨论】:

    • 出现错误:第一个参数类型错误。找到:'org.hamcrest.Matcher',需要:'int'
    • 对,我弄乱了复制和粘贴部分——它应该是 RecyclerViewAction.actionOnItem
    • 准确来说:onView(allOf(withId(R.id.recycler_view),isDisplayed())).perform(RecyclerViewActions.actionOnItem(hasDescendant(withText("Job# 109"))),点击()));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    相关资源
    最近更新 更多