Come è possibile scorrere fino alla fine di ScrollView nel test Espresso? Grazie!Espresso: come scorrere fino alla fine di ScrollView
risposta
Se nella parte inferiore di ScrollView è necessario trovare una vista e abbinare qualcosa contro di essa, quindi eseguire semplicemente l'azione scrollTo()
su di essa, prima di qualsiasi altra azione che richiede che venga visualizzata.
onView(withId(R.id.onBottomOfScrollView))
.perform(scrollTo(), click());
Nota: scrollTo non avrà alcun effetto se è già visualizzata la vista in modo da poter utilizzare in sicurezza in casi in cui viene visualizzata la vista
anche u può provare:
public Matcher<View> getConstraints() {
return allOf(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE), isDescendantOfA(anyOf(
isAssignableFrom(ScrollView.class), isAssignableFrom(HorizontalScrollView.class), isAssignableFrom(NestedScrollView.class))));
Se si dispone di una vista all'interno di android.support.v4.widget.NestedScrollView invece di scrollView scrollTo() non funziona.
Dove posso inserire/chiamare questo metodo? – Ixx
Credo che questa risposta manchi di informazioni per chiunque non sia pienamente consapevole. Si prega di controllare https://stackoverflow.com/questions/35272953/espresso-scrolling-not-working-when-nestedscrollview-or-recyclerview-is-in-coor per la risposta completa –
Per completezza (in base alla risposta del Morozov), è possibile passare una consuetudine ViewAction
invece di scrollTo()
, che permette di utilizzare NestedScrollView
:
ViewAction customScrollTo = new ViewAction() {
@Override
public Matcher<View> getConstraints() {
return allOf(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE), isDescendantOfA(anyOf(
isAssignableFrom(ScrollView.class),
isAssignableFrom(HorizontalScrollView.class),
isAssignableFrom(NestedScrollView.class)))
);
}
@Override
public String getDescription() {
return null;
}
@Override
public void perform(UiController uiController, View view) {
new ScrollToAction().perform(uiController, view);
}
};
e usarlo in questo modo:
onView(withId(R.id.onBottomOfScrollView)).perform(customScrollTo, click());
per me quando si utilizza nestedScrollview ho appena swipeUp (se si vuole andare verso il basso) .. Ecco un esempio di chiamata:
onView(withId(R.id.nsv_container))
.perform(swipeUp());
Come mai questo non funziona con 'NestedScrollView'? –
Non l'ho provato, ma provalo e scrivi una nuova domanda con il numero – appoll
funziona solo se conosci i tuoi elementi figli - cosa fare se non conosci l'ultimo elemento? – PKAP