2014-06-06 1 views
6

Comment automatiser le sélecteur de numéro en utilisant un expresso. Je veux régler l'heure spécifique dans le timePicker en utilisant expresso.Automatiser le sélecteur de numéro dans Android à l'aide d'un expresso

+0

Nous avons besoin de plus de détails pour vous aider. Dites-nous ce que vous avez fait jusqu'ici, où vous êtes bloqué et fournissez tout code pertinent. – Maxwell

+0

@ Maxwell J'utilise expresso et je veux sélectionner l'heure de timepicker. Je veux faire défiler le sélecteur de nombre pour choisir un nombre. Je suis capable de cliquer sur le sélecteur de nombre, et éditer le texte du sélecteur de nombre choisi. Voici le code que j'ai utilisé: Pranit

Répondre

14

Pour correspondre à une Voir par son nom de classe, vous pouvez simplement utiliser:

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

Une fois que vous avez l'objet ViewInteraction vous pouvez définir une valeur sur elle définissant et en utilisant un viewAction comme suit:

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); 
      } 
     }; 
    } 
+0

Cela fonctionne bien, mais pour une raison quelconque, il n'invoque pas la valeur a changé les écouteurs? –

+0

@JoeMaher avez-vous trouvé une solution de contournement à propos de l'écouteur de modification qui ne déclenche pas? – Sheychan

+0

@JoeMaher ouais, change listener ne se déclenche pas pour moi aussi. Des conclusions à ce sujet? – user1777136

7

match de la vue, puis effectuer l'action:

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

Créer un viewAction pour régler la numéro:

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); 
     } 
    }; 
} 
Questions connexes