2017-03-01 2 views
0

angezeigt ich die folgende Ansicht haben:machen Espresso Spiel Blick ins Innere ViewPager, die derzeit nicht

<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="wrap_content" 
     android:orientation="vertical" 
     android:layout_margin="@dimen/default_spacing"> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/view_monthly_resume_accounts" 
      android:layout_width="match_parent" 
      android:layout_height="100dp"/> 

     <!-- a lot of content --> 

     <TableLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="48dp"> 

      <TableRow> 
       <TextView 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="@string/total_receipts" 
        android:textColor="@color/color_primary_text"/> 
       <TextView 
        android:id="@+id/view_monthly_resume_total_receipts" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textColor="@color/value_unreceived" 
        android:gravity="end"/> 
      </TableRow> 
      <!-- more content --> 
     </TableLayout> 

    </LinearLayout> 
</ScrollView> 

Diese Ansicht ist in einem ViewPager. Ich möchte den Inhalt der Ansicht mit der ID view_monthly_resume_total_receipts überprüfen. Da der Blick ins Innere eines ViewPager ist habe ich folgendes:

onView(allOf(
      withId(R.id.view_monthly_resume_balance), 
      isDisplayed())) 
      .check(matches(withText(expectedBalance))); 

ich eine Menge Inhalt haben, ist es nicht garantiert, dass die Ansicht angezeigt wird, kann es in der aktuellen Ansicht werden in der ViewPager angezeigt wird, aber Offscreen.

Ich habe versucht, IDs zu TableLayout, LinearLayout oder ScrollView hinzufügen und withParent verwenden und überprüfen, ob das übergeordnete Element angezeigt wird, aber nicht erfolgreich war.

Ich habe versucht mit hasSiblings und suchen R.id.view_monthly_resume_accounts, die ich sicher weiß, dass angezeigt wird, da es die erste Ansicht ist, aber auch nicht funktioniert hat.

Also meine Frage ist: wie Espresso eine Ansicht zu finden, die in einer Ansicht ist, die in einem ViewPager ist, aber die Ansicht ist Offscreen?

Antwort

0

Nach einigen Recherchen fand ich die Methode isDescendantOfA.

Die Methode withParent sucht nur nach der nächsten viewGroup. Der isDescendantOfA sucht nach der gesamten Struktur.

Im Beispiel von der Frage, kann ich eine ID an das Linearlayout in der Nähe des Scrollview und aktualisieren, das Spiel auf den folgende hinzu:

onView(allOf(
     withId(R.id.view_monthly_resume_balance), 
     allOf(
      isDescendantOfA(withId(<linear layout id>)), 
      isDisplayed())) 
     .check(matches(withText(expectedBalance))); 
Verwandte Themen