在RecyclerView类的扩展上使用RecyclerViewActions

时间:2017-05-17 17:53:29

标签: android android-espresso

我还在学习Espresso的API,我目前需要点击类中的第一项,这是RecyclerView的扩展。

以下是我用来点按该项目的代码:

onView(withId(R.id.[recyclerviewid])).perform(actionOnItemAtPosition(0, 
longClick()));

我被指出最近添加的" RecyclerViewActions"但是试图点击该项目会给我以下错误:

Caused by: java.lang.RuntimeException: Action will not be performed because 
the target view does not match one or more of the following constraints:
(is assignable from class: class android.support.v7.widget.RecyclerView and is 
displayed on the screen to the user)
Target view: "[Extension of RecyclerView class] {id=2131887687,..."

看看对象,uiautomatorviewer将其识别为RecyclerView,但是我很困惑。

我正在考虑尝试为此编写自定义匹配器,但我不完全确定从哪里开始。

任何有用的东西,如果您需要更多信息,请告诉我们!

更新(5/17): 开始使用自定义匹配器,但我不知道我在做什么,或者我是否需要为它做另一个自定义操作。

这是我查找BoundedMatchers后到目前为止所得到的,尽管" getError()"由于RecyclerViews没有这种方法,因此无法实施。任何反馈/建议都可以:

@NonNull
public static Matcher<View> inRecyclerListView(final Matcher<Integer> listResourceId) {
    return new BoundedMatcher<View, RecyclerView>(RecyclerView.class) {


        @Override
        public void describeTo(Description description) {
            description.appendText("in list: " + listResourceId);
        }

        @Override
        protected boolean matchesSafely(final RecyclerView recyclerView) {
            return listResourceId.matches(listResourceId.getError().toString());
        }
    };
}

0 个答案:

没有答案