Intereting Posts
Есть ли способ ограничить веб-сайт отображением только на Android? Как сделать HorizontalScrollView RIGHT на LEFT Scroll android AudioTrack: воспроизведение звука через Wi-Fi Phonegap / HTML5 и проблема изменения размера экрана Android при повороте с пейзажа на портрет MapView onCreate выбрасывает NullPointerException на устройствах LG Что лучше с точки зрения производительности синтаксического анализа в Android, XML или JSON? Определение продолжительности и формата аудиофайла Что такое «android: fontFamily =« sans-serif-light »в Java-коде? Android: развернуть / свернуть анимацию Как подготовить изображения для всех разрешений для Android? Adb может отображать устройства, но adb shell / logcat не работает Android adb нажимает на место в устройстве без SD-карты и без доступа root Как использовать SparseArray в качестве источника для адаптера? Как я могу программно открывать / закрывать уведомления в Android? Android: активность не найдена на некоторых устройствах при попытке открыть локальный HTML-файл в браузере

Эспрессо: прокрутка Recyclerview до конца

Есть ли способ прокрутить до конца recyclerview с помощью Espresso?

Есть элемент с текстом, скажем, «Текст XYZ», а recyclerview имеет id recycler_view. Этот элемент является последним элементом просмотра ресайклера.

Я пытался

onView(withId(R.id.recycler_view)).check(matches(isDisplayed())).perform(RecyclerViewActions.scrollTo(withText("Text XYZ")),click()); 

Но это не работает. Есть идеи?

Solutions Collecting From Web of "Эспрессо: прокрутка Recyclerview до конца"

RecyclerViewActions.scrollTo() соответствует ItemView ViewHolder , который накачивается в onCreateViewHolder() адаптера. И для того, чтобы scrollTo() работал, вам необходимо предоставить совпадение, которое однозначно идентифицирует ItemView .

Ваш текущий помощник сообщает эспрессо, чтобы перейти к ViewHolder, который был завышен с помощью TextView как itemView . Что может случиться, но обычно у вас есть действие ViewGroup происходит там, чтобы ViewGroup держателей вида так, как вы хотите, чтобы они выглядели.

Если вы измените свой scrollTo() Matcher, hasDescendant(withText("Text XYZ")) для учета всех вложенных макетов (если их несколько).

Также имейте в виду, так как вы также пытаетесь щелкнуть элемент – вы не можете сделать это в той же функции perform() потому что он отправит клик на текущий ViewInteraction , который в этом случае будет RecyclerView с идентификатором R.id.recycler_view . Выполнение этого же действия просто кликает по середине на RecyclerView , а не на элемент, который вы прокрутили.

Чтобы решить эту проблему, вам понадобится еще один onView() с помощью соединителя, который вы использовали для прокрутки к элементу или с помощью RecyclerView.actionOnItem() .

В случае другого onView() hasDescendant(withText("Text XYZ")) выйдет из строя, потому что он найдет всех родителей этого TextView (viewholder, recyclerview, viewgroup, который содержит recyclerview и т. Д.), Поскольку они У всех есть этот конкретный потомок. Это заставит вас сделать более точным ItemView и учитывать все вложенные макеты. В обычных ситуациях я обычно использую withChild() , но для вас это может быть другим.