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.

AppiumLibrary para Robot Framework – Obteniendo el Texto de un Botón

Estoy experimentando con AppiumLibrary en RobotFramework y tengo una prueba simple para un requisito que dice: “el botón Set debería existir en esta página”. Estoy probando esto recuperando el botón que tiene un ID especificado y luego verificando si ese botón tiene el texto correcto.

Puedo recuperar el botón que quiero a través del ID, sin embargo, tengo problemas para obtener el texto real en el botón.

Aquí es cómo se define el botón en la página web:

<button id="button-set" class="button ng-binding" style="width: 20%">Set</button>

¡Muy simple! Usando Appium Desktop en modo de aplicación web/híbrida y haciendo clic en el botón Set, dice que el atributo “texto” muestra “Set”. Sin embargo, he aprendido que el uso de los atributos en Appium Desktop no son válidos al buscar elementos en una página web, por ejemplo, buscar por el atributo Clase en Appium Desktop (android.widget.Button) no es correcto porque en la página web la clase para el botón es en su lugar: “botón ng-binding”.

He intentado lo siguiente:

# esto recupera el botón bien, por ID
Página debería contener elemento xpath=//button[@id="button-set"]
# todos estos devuelven 'None'
${nombre}= Obtener atributo del elemento xpath=//button[@id="button-set"] nombre
${texto}= Obtener atributo del elemento xpath=//button[@id="button-Set"] texto

Entonces, no estoy seguro qué atributo usar para recuperar el texto al recuperar el elemento por ID. En su lugar, he intentado recuperar el elemento de esta manera:

# esto también pasa bien - siento que también debería asegurarme de que este botón tenga el ID correcto, para que el mapeo
# entre procedimientos de prueba y casos sea más fácil, pero si esto es lo mejor que se puede obtener, entonces
# esto puede discutirse
Página debería contener elemento xpath=//button[contains(text(),'set')]

# sin embargo, lo siguiente no tiene sentido, esto devuelve "botón" en lugar de "botón-set", lo que me hace pensar que la consulta XPath no es correcta
${id2}= Obtener atributo del elemento xpath=//button[contains(text(),'set')] id
# nuevamente, ambos devuelven 'None'
${nombre2}= Obtener atributo del elemento xpath=//button[contains(text(),'set')] nombre
${texto2}= Obtener atributo del elemento xpath=//button[contains(text(),'set')] texto

También he intentado lo siguiente:

${elemento}= Obtener elemento web xpath=//button[@id="button-set"]
# esto devuelve "botón-set" como esperarías:
${id3}= Obtener atributo del elemento ${elemento} id
# esto nuevamente devuelve 'None'
${nombre3}= Obtener atributo del elemento ${elemento} nombre
${texto3}= Obtener atributo del elemento ${elemento} texto

Siento que debería ser algo muy simple de hacer, y puedo ver en otras preguntas que usaría el atributo Nombre cuando se usa el Appium puro. Sin embargo, utilizando la biblioteca Robot Framework en su lugar, esto no parece ser el enfoque correcto. Debo estar haciendo algo bastante simple aquí, ¿alguien puede señalarlo?

¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Solución para recuperar el texto en un elemento de botón en RobotFramework usando AppiumLibrary

    Si tiene problemas para recuperar el texto en un elemento de botón utilizando la palabra clave GET ELEMENT ATTRIBUTE, puede intentar usar la palabra clave GET TEXT en su lugar. Aquí hay un ejemplo:

    # Recuperar el elemento de botón por ID
    ${button}=    GET WEBELEMENT    xpath=//button[@id="button-set"]
    
    # Utilice GET TEXT para recuperar el texto en el elemento de botón
    ${text}=      GET TEXT          ${button}
    
    # Verifique que el texto sea el esperado
    Should Be Equal As Strings    ${text}    Set
    

    Alternativamente, puede intentar usar la palabra clave GET ATTRIBUTE con el atributo “value” en lugar de “text”. Aquí hay un ejemplo:

    # Recuperar el elemento de botón por ID
    ${button}=    GET WEBELEMENT        xpath=//button[@id="button-set"]
    
    # Utilice GET ATTRIBUTE para recuperar el atributo de valor en el elemento de botón
    ${value}=     GET ATTRIBUTE        ${button}    value
    
    # Verificar que el valor sea el esperado
    Should Be Equal As Strings    ${value}    Set
    

    ¡Espero que esto ayude!

Comments are closed.