Pregunta

Estoy intentando leer un valor desde mi vista de interfaz de usuario.Este es el método que utilizo para encontrar la cadena que necesito.Esto sólo devuelve el textView ID, y no el contenido.

    public static String getSpeedIndex(){
    return onView(allOf(withId(R.id.slider_index),
            isDescendantOfA(withId(R.id.speed_number_column))))
            .toString();
    }

¿Cómo puedo devolver la cadena que necesito?

¿Fue útil?

Solución

Como se mencionó en los comentarios, no hicimos esta acción un ciudadano de primera clase de la API de expreso para alentar a los autores de las pruebas que se explicitan con acciones y afirmaciones y desalentar la lógica condicional en las pruebas.Con eso en mente, le animo a que investigue un falso para su servidor, de modo que pueda controlar la entrada de prueba (y evitar la falla) y evitar la lógica condicional.

Sin embargo, si debe obtener el valor, puede hacer algo así:

final AtomicReference<String> textFromView = new AtomicReference<String>();

onView(<matcher for your view>).perform(new ViewAction() {
  @Override
  public Matcher<View> getConstraints() {
    // TODO - at the very least, check that this is an instance of TextView 
  }

  @Override
  public String getDescription() {
    return "get text from text view"
  }

  @Override
  public void perform(UiController uiController, View view) {
    textFromView.set(((TextView) view).getText());
  }
}

Por supuesto, si lo haces mucho (lo que no debería), puedes hacerlo mejor al poner todo esto en una clase separada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top