android - Espresso - 如何在回收站 View 中查找特定项目(顺序是随机的)

标签 android android-espresso

我想知道如何在回收站 View 中找到特定项目,其中项目的顺序在每次运行时都是随机的。

假设我在回收站 View 中有 4 个项目,每个项目都由相同类型的 View 持有者表示,其中有一个 TextView 。每个 View 持有者/项目都有一个唯一的标题。对于此示例,为简单起见,假设标题为“A”、“B”、“C”和“D”。

如果顺序是随机的,我如何找到位置(然后单击)项目“A”?我知道如果顺序没有改变,我可以执行 scrollToPosition RecyclerViewInteraction 操作,但在这种情况下,顺序可以而且将会改变。

有什么想法吗?

最佳答案

我能够通过执行以下操作使其正常工作:

Matcher<RecyclerView.ViewHolder> matcher = CustomMatcher.withTitle("A");
onView((withId(R.id.recycler_view))).perform(scrollToHolder(matcher), actionOnHolderItem(matcher, click()));

CustomMatcher.withTitle 是:

    public static Matcher<RecyclerView.ViewHolder> withTitle(final String title)
{
    return new BoundedMatcher<RecyclerView.ViewHolder, CustomListAdapter.ItemViewHolder>(CustomListAdapter.ItemViewHolder.class)
    {
        @Override
        protected boolean matchesSafely(CustomListAdapter.ItemViewHolder item)
        {
            return item.mTitleView.getText().toString().equalsIgnoreCase(title);
        }

        @Override
        public void describeTo(Description description)
        {
            description.appendText("view holder with title: " + title);
        }
    };
}

关于android - Espresso - 如何在回收站 View 中查找特定项目(顺序是随机的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37736616/

相关文章:

java - 在 Espresso 测试中等待异步操作

android - AVD 不创建 config.ini 文件

android - 父 subview 的单击事件

android - 如何通过 UI 测试在 Jetpack 中输入文本 compose TextField?

android - APK junit/runner/smalllogo.gif 中复制的重复文件

android - 使用 Espresso 对随机列表元素执行单击

android - 如何禁用 Android 中的 UI 组件?

java - 在 HTTP POST 中设置参数

android - Opengl-es手动调用onDrawFrame

android - 使用 Android Espresso 在层次结构中查找 View