J'effectue le test ci-dessous pour valider le texte à l'écran, le texte est présent sur la vue mais je dois faire défiler la page pour voir le texte manuellement.
onView(withText("Launch")).check(ViewAssertions.matches(isDisplayed()));
onView(withText("January 2010")).check(ViewAssertions.matches(isDisplayed()));
L'erreur suivante arrive, cependant le texte est présent sur la vue mais il faut faire défiler la page pour voir le texte manuellement.
Android.support.test.espresso.base.DefaultFailureHandler $ AssertionFailedWithCauseError: 's'affiche à l'écran pour l'utilisateur' ne correspond pas à la vue sélectionnée. Attendu: s'affiche à l'écran pour l'utilisateur. Got: "TextView {id = 2131361941, res-name = project_details_label_tv, visibilité = VISIBLE, largeur = 249, hauteur = 41, has-focus = false, has-focusable = false, has -window-focus = true, is-clickable = false, is-enabled = true, is-focus = false, is-focusable = false, is-layout-required = false, is-selected = false, root-is-layout -requested = false, has-input-connection = false, x = 4.0, y = 24.0, text = Status, input-type = 0, ime-target = false, has-links = false} "
Je ne sais pas à quoi ressemble cette disposition, mais pour l'utiliser
Effectuez simplement une
ViewActions.scrollTo()
avant votre assertion:`onView(withText("Launch")).perform(ViewActions.scrollTo()).check(ViewAssertions.matches(isDisplayed()));`
vous devez avoir ScrollView
comme vue principale dans la structure.
Si vous avez déjà LinearLayout, RelativeLayout, vous devez le changer comme ceci:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<TextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"/>
</LinearLayout>
"
Vous pouvez utiliser SWIPE pour faire défiler vers le bas de l'écran:
Espresso.onView(ViewMatchers.withId(R.id.recyclerView)).perform(ViewActions.swipeUp());
Pour moi, ça marche Nice.
Pablo
Il existe une solution pour cliquer dans un bouton dans une vue de défilement
onView(withId(R.id.onBottomOfScrollView)).perform(scrollTo(), click());
Effectuez simplement une ViewActions.scrollTo()
avant votre assertion:
onView(withText("Launch")).perform(ViewActions.scrollTo()).check(ViewAssertions.matches(isDisplayed()));