2014-12-09 9 views
8

Ich habe ein ListView in einem PopupWindow, und ich möchte auf das zweite Element in der Liste klicken. Ich habe folgendes versucht:Schreiben Sie einen Test, der auf Ansichten in PopupWindow klickt

// Open the popupwindow 
onView(withId(R.id.popupwindow_open)).perform(click()); 

Und jetzt, wo das Popup-Fenster erscheint, habe ich versucht:

onData(anything()).inAdapterView(withContentDescription("delete")).atPosition(1).perform(
     click()); 

oder dies:

onView(withContentDescription("delete"))).perform(click()); 

Aber ich bekomme immer, dass die Ansicht isn nicht gefunden. Wie kann ich das in Espresso machen?

+1

Espresso sollte Ansichten in 'PopupWindow' finden können. Sind Sie sicher, dass Ihre Ansicht die Inhaltsbeschreibung von "delete" enthält? Du verwechselst 'android: text' nicht mit' android: contentDescription'? –

+1

'.inAdapterView (withContentDescription (" delete "))' bedeutet, dass der ListView selbst eine contentDescription von "delete" haben muss. Kann die inAdapterView entfernt werden? d. h. 'onData (irgendetwas()). atPosition (1) .perform ( click());' Auch wenn Sie die vollständige Fehlermeldung posten, wird es uns helfen, das Problem besser zu verstehen. – yogurtearl

Antwort

5

In Ihrem Fall haben Sie zwei verschiedene Fenster. Um auf Espresso zu zeigen, mit welchem ​​Fenster Sie interagieren möchten, müssen Sie Root Matcher verwenden. Probieren Sie oder mit diesen Lösungen ein wenig spielen:

onView(withContentDescription("delete")) 
    .inRoot(withDecorView(not(is(getActivity().getWindow().getDecorView())))) 
    .perform(click()); 

oder

onData(withContentDescription("delete")) 
    .inRoot(withDecorView(not(is(getActivity().getWindow().getDecorView())))) 
    .inAdapterView(withId(R.id.adapter_view)) 
    .perform(click()); 
18

Der Android-System Popups und Warnungen werden in einem anderen Fenster angezeigt. Sie müssen also versuchen, die Ansicht in diesem bestimmten Fenster und nicht im Hauptfenster zu finden.

Espresso bietet eine bequeme Methode, um die Stammansicht für Popup-Fenster zu finden. Versuche dies.

+3

Sie sind ein Lebensretter, nach Stunden versucht alle Lösungen, ich wünschte, das hätte mehr Stimmen: für mich hat es mit Textsuche onView (withText ("Popup Auswahl 1")) .inRoot (isPlatformPopup()) .perform (klicken()); –

Verwandte Themen