web-dev-qa-db-fra.com

Comment faire défiler l'écran vers le bas dans le Android test expresso? Je dois valider le texte présent à l'écran

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} "

15
HillHacker

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>

"

16
piotrek1543

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

7
Pablo

Il existe une solution pour cliquer dans un bouton dans une vue de défilement

onView(withId(R.id.onBottomOfScrollView)).perform(scrollTo(), click());

Espresso: comment faire défiler vers le bas de ScrollView

Effectuez simplement une ViewActions.scrollTo() avant votre assertion:

onView(withText("Launch")).perform(ViewActions.scrollTo()).check(ViewAssertions‌​.matches(isDisplayed()));
1
Be_Negative