Espresso Nested Recycler Views UI 测试

Ami*_*sha 4 java android ui-testing android-espresso android-recyclerview

我有一个 Horizo​​ntalRecyclerView在一个 vertical 里面RecyclerView。我正在使用我在其他问题上找到的这段代码:

onView(allOf(isDescendantOfA(withRecyclerView(R.id.parentVerticalRecyclerView).atPosition(parentPosition)),
             isDescendantOfA(withRecyclerView(R.id.childHorizontalRecyclerView).atPosition(childPosition)),
                (withText("USA"))))
                .perform(click());

// It is not working for parentPosition > 0
Run Code Online (Sandbox Code Playgroud)

但这仅适用于 parent 的第一行RecyclerView

如何单击 parent 的第二行的 child RecyclerView 上的元素RecyclerView

Ami*_*sha 6

我终于找到了解决方案:

onView(allOf(
         withId(R.id.childHorizontalRecyclerView),
         withParent(
           withRecyclerView(R.id.parentVerticalRecyclerView).atPosition(2)
         )
       )
).perform(RecyclerViewActions.actionOnItemAtPosition(3, scrollTo()))
.check(matches(hasDescendant(withText("USA")))); 
Run Code Online (Sandbox Code Playgroud)