2014-06-06 3 views
6

So automatisieren Sie Zahlenauswahl mit Espresso. Ich möchte eine bestimmte Zeit im timePicker mit Espresso einstellen.Automatisieren von Zahlenauswahl in Android mit Espresso

+0

Wir brauchen mehr Details zu helfen. Sagen Sie uns, was Sie bisher getan haben, wo Sie stecken bleiben und geben Sie den entsprechenden Code an. – Maxwell

+0

@Maxwell Ich benutze Espresso und möchte die Zeit vom Zeitpicker auswählen. Ich möchte durch die Zahlenauswahl blättern, um eine Nummer auszuwählen. Ich kann auf die Zahlenauswahl klicken und den Text der ausgewählten Zahlenauswahl bearbeiten. Unten ist der Code, den ich verwendet habe: Pranit

Antwort

14

Um eine Ansicht von seinen Klassennamen übereinstimmen können Sie einfach:

public static ViewAction setTime(final int hour, final int minute) { 
     return new ViewAction() { 
      @Override 
      public void perform(UiController uiController, View view) { 
       TimePicker tp = (TimePicker) view; 
       tp.setCurrentHour(hour); 
       tp.setCurrentMinute(minute) 
      } 
      @Override 
      public String getDescription() { 
       return "Set the passed time into the TimePicker"; 
      } 
      @Override 
      public Matcher<View> getConstraints() { 
       return ViewMatchers.isAssignableFrom(TimePicker.class); 
      } 
     }; 
    } 
:

onView(withClassName(Matchers.equalTo(TimePicker.class.getName()))); 

Sobald Sie das ViewInteraction Objekt haben Sie einen Wert auf ihn zu definieren und mit Hilfe einer Viewaction wie folgt einstellen

+0

Das funktioniert gut, aber aus irgendeinem Grund ruft es nicht die Wert geändert Listener? –

+0

@JoeMaher haben Sie eine Umgehungslösung für den nicht auslösenden Change Listener gefunden? – Sheychan

+0

@JoeMaher Ja, Change Listener löst auch nicht für mich aus. Irgendwelche Erkenntnisse dazu? – user1777136

7

Spiel der Ansicht, und führen Sie dann die Aktion:

ViewInteraction numPicker = onView(withClassName(Matchers.equalTo(NumberPicker.class.getName()))); 
numPicker.perform(setNumber(1)); 

eine Viewaction erstellen Sie einstellen Nummer:

public static ViewAction setNumber(final int num) { 
    return new ViewAction() { 
     @Override 
     public void perform(UiController uiController, View view) { 
      NumberPicker np = (NumberPicker) view; 
      np.setValue(num); 

     } 

     @Override 
     public String getDescription() { 
      return "Set the passed number into the NumberPicker"; 
     } 

     @Override 
     public Matcher<View> getConstraints() { 
      return ViewMatchers.isAssignableFrom(NumberPicker.class); 
     } 
    }; 
}