2015-06-16 8 views
11

Wykonuję poniższy test, aby zweryfikować tekst na ekranie. Tekst jest obecny w widoku, ale trzeba przewinąć stronę, aby wyświetlić tekst ręcznie.Jak przewinąć ekran w dół w teście espresso Android? Muszę zweryfikować tekst wyświetlany na ekranie:

onView(withText("Launch")).check(ViewAssertions.matches(isDisplayed())); 
    onView(withText("January 2010")).check(ViewAssertions.matches(isDisplayed())); 

Następujący błąd nadchodzi, ale tekst jest obecny w widoku, ale trzeba przewinąć stronę, aby zobaczyć tekst ręcznie.

android.support.test.espresso.base.DefaultFailureHandler$AssertionFailedWithCauseError: 'is displayed on the screen to the user' doesn't match the selected view. Expected: is displayed on the screen to the user Got: "TextView{id=2131361941, res-name=project_details_label_tv, visibility=VISIBLE, width=249, height=41, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=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}"

+0

I odpowiedział na pytanie, które zrobi tylko, że tutaj - http://stackoverflow.com/questions/28218155/espresso-how-to-do-custom-swipe-eg-swipetop-or-swipebottom/42399407 # 42399407 ... – Nefariis

Odpowiedz

2

Wystarczy wykonać ViewActions.scrollTo() przed stwierdzeniem:

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

* only "Jeśli widok, nad którym pracujesz, znajduje się wewnątrz ScrollView". – appoll

+0

To może rzucić "NoMatchingViewException". –

12

Nie wiem, jak ten układ wygląda, ale w użyciu

Just perform a ViewActions.scrollTo() before your assertion:

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

trzeba mieć ScrollView jako swój główny widok w strukturze.

Jeśli już LinearLayout, RelativeLayout, trzeba go zmienić na słuszne:

<?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> 

`

+0

Nie wierzę, że twoje stwierdzenie dotyczące ScrollView jest poprawne. Widok musi znajdować się wewnątrz przewijania, ale ten widok ScrollView nie musi być widokiem rodzica (lub głównym) w układzie. –

1

Możesz użyć PRZESUŃ, aby przewinąć do dolna część ekranu:

Espresso.onView(ViewMatchers.withId(R.id.recyclerView)).perform(ViewActions.swipeUp()); 

Dla mnie działa dobrze.

Pablo

Powiązane problemy