Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

177
Vistas
Error de espresso al escribir texto en TextInputLayout

Quiero probar mi interfaz de usuario de inicio de sesión que contiene algunos campos de TextInputLayout, configuré un código para que se ejecute pero falla y arroja un error, ¿alguien puede por favor con este problema? Se lo agradezco de antemano.

  • Simplemente quiero escribir algo de texto en TextInputLayout
 @Test fun testCaseSimulateLoginOnButtonClick(){ onView(withId(R.id.loginEmail)).perform(typeText("xxxxxxxx@gmail.com")) onView(withId(R.id.loginPassword)).perform(typeText("123456")) onView(withId(R.id.loginBtn)).perform(click()) onView(withId(R.id.drawer)).check(matches(isDisplayed())) }
  • este es el error que me sale
 Error performing 'type text(xxxxxxxx@gmail.com)' on view 'view.getId() is <2131362123/com.example.app:id/loginEmail>'.
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No puede escribir texto en la vista TextInputLayout , eso es solo un contenedor. TextInputLayout tiene un FrameLayout como elemento secundario directo, y en ese FrameLayout la primera vista secundaria es EditText (en la que puede escribir)

Puede obtener EditText en Espresso con algunos emparejadores adicionales (encuentre una vista que sea descendiente del diseño base R.id.text_layout y tenga un nombre de clase que termine con EditText ).

 onView( allOf( isDescendantOfA(withId(R.id.text_layout)), withClassName(endsWith("EditText")) ) ).perform( typeText("Hello world") )

Si tiene que hacer esto en muchos lugares, puede escribir una función de ayuda

 fun isEditTextInLayout(parentViewId: Int): Matcher<View> { return allOf( isDescendantOfA(withId(parentViewId)), withClassName(endsWith("EditText")) ) }

y usarlo como

 onView(isEditTextInLayout(R.id.text_layout)).perform(typeText("Hello world"))

para un XML que parece

 <com.google.android.material.textfield.TextInputLayout android:id="@+id/text_layout" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Type words here" android:layout_margin="16dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" > <androidx.appcompat.widget.AppCompatEditText android:layout_width="match_parent" android:layout_height="wrap_content"/> </com.google.android.material.textfield.TextInputLayout>

Algunas de las importaciones requeridas para que esto funcione son

 import androidx.test.espresso.matcher.ViewMatchers.* import org.hamcrest.Matcher import org.hamcrest.Matchers.allOf import org.hamcrest.Matchers.endsWith

Por supuesto, también podría simplemente agregar un android:id para EditText y obtenerlo de esa manera también ...

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda