es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo esperar y capturar el texto de android.widget.TextView en una prueba de appium cuando no hay un resource_id?

La prueba de appium tiene como objetivo realizar ciertas combinaciones de algunos campos de entrada y uno de ellos es el campo de contraseña.

Si el nombre de usuario ya está tomado, se mostrará un mensaje correspondiente debajo del botón de contraseña que dice “nombre de usuario ya tomado”.
Pero si el nombre de usuario es válido pero la contraseña es incorrecta, se mostrará el mensaje debajo como “la combinación de nombre de usuario y contraseña no funcionó”.

El mensaje de error en los casos anteriores se muestra en un android.widget.TextView.

Dos preguntas:
1) Grabé la prueba usando Appium Studio. Cuando ejecuto la prueba, quiero esperar unos segundos y obtener el texto del mensaje de error. ¿Cómo hacer la parte de “esperar” y “obtener el texto”? (Más detalles a continuación). El desafío es que no hay un ID de recurso para el textView, pero sí hay xpath y otros detalles disponibles.

Nota: Como el mensaje de error se muestra justo debajo del campo de contraseña, no tiene un ID de recurso, solo está disponible el xpath.

Esta es la estructura:

<android.widget.linearlayout resource-id="com.a.b/textinputlayoutlginusername">
    <android.widget.framelayout>
        <android.widget.edittext resource-id="com.a.b/lginusernameedit">
        <!-- las 3 líneas anteriores son para el campo de nombre de usuario, solo se agregaron para mayor claridad -->
    </android.widget.edittext></android.widget.framelayout></android.widget.linearlayout>

    <android.widget.linearlayout resource-id="com.a.b:id/textinputlayoutlginpwd">
        <android.widget.framelayout>
            <android.widget.edittext> 
            <android.widget.imagebutton resource-id="com.a.b/textinputendicon">
        <android.widget.textview> <!-- ** este es el texto que intento obtener -->
    <android.widget.textview resource-id="com.a.b/tvforgotpwd">
    <android.widget.button resource-id="com.a.b/btn_login">
</android.widget.button></android.widget.textview></android.widget.textview></android.widget.imagebutton></android.widget.edittext></android.widget.framelayout></android.widget.linearlayout>

Por favor, ayúdame. Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para agregar un período de espera y obtener el texto del mensaje de error en Appium Studio, puedes utilizar el siguiente fragmento de código:

    // Esperar durante 2 segundos
    Thread.sleep(2000);
    
    // Localizar el TextView del mensaje de error utilizando XPath
    MobileElement errorMessage = (MobileElement) driver.findElementByXPath("//android.widget.TextView[contains(@text, 'nombre de usuario')]");
    
    // Obtener el texto del mensaje de error
    String errorText = errorMessage.getText();
    

    Aquí, primero esperamos durante 2 segundos utilizando Thread.sleep(2000) para darle al aplicativo tiempo suficiente para mostrar el mensaje de error. Luego, localizamos el elemento TextView del mensaje de error utilizando XPath que contiene el texto “nombre de usuario”. Finalmente, obtenemos el texto del mensaje de error utilizando errorMessage.getText() y lo almacenamos en la variable errorText.

    Dado que no está disponible un resourceId para el TextView, debemos utilizar XPath para localizarlo. El XPath que hemos utilizado es //android.widget.TextView[contains(@text, 'nombre de usuario')], que busca cualquier elemento TextView que contenga el texto “nombre de usuario”. Puedes modificar este XPath según la estructura de tu aplicativo y el texto del mensaje de error.

Comments are closed.