-1

Ich habe über die Espresso-Proben aus, aber sie nur direkte Methoden geben, klicken Sie an einer bestimmten Position ausführen würden wir Sie müssen an einer Position auf eines der mehreren untergeordneten Elemente klicken. Wie eine TextView, ImageView und Checkbox.Wie für recyclerview Kind irgend Artikel Position in Espresso finden

Ich sehe keinen einfachen Weg, Checkbox auf Position 25 zu erreichen, wenn meine Recyclerview 50 Elemente hat. Kann jemand eine andere einfache Lösung als das Definieren meiner eigenen ViewAction-Implementierung haben?

Antwort

0

Sie können Ihre eigenen withIndex Matcher wie folgt erstellen:

public static Matcher<View> withIndex(final Matcher<View> matcher, final int index) { 
    return new TypeSafeMatcher<View>() { 
     int currentIndex = 0; 

     @Override 
     public void describeTo(Description description) { 
      description.appendText("with index: "); 
      description.appendValue(index); 
      matcher.describeTo(description); 
     } 

     @Override 
     public boolean matchesSafely(View view) { 
      return matcher.matches(view) && currentIndex++ == index; 
     } 
    }; 
} 

Anwendungsbeispiel

int indexToSelect = 4; 
onView(allOf(withIndex(withId(R.id.textViewToSelect), indexToSelect), isDescendantOfA(withId(R.id.customRecyclerView)))).perform(click()); 
Verwandte Themen