Creé un marco en el que usé Set Browser Implicit Wait 30 Tengo 50 suite que contiene un total de 700 casos de prueba. Algunos de los casos de prueba (200 TC) tienen pasos para encontrar si el elemento está presente y el elemento no está presente. Mi objetivo es que no quiero esperar hasta 30 segundos para comprobar si el elemento está presente o el elemento no está presente. Intenté usar Wait Until Element Is Visible ${locator} timeout=10, esperando esperar solo 10 segundos para el Elemento, pero esperó 30 segundos. Pregunta: ¿Alguien puede ayudar con el enfoque correcto para lidiar con tales escenarios en mi marco? Si acepto esperar hasta 30 segundos, el tiempo necesario para completar dicho caso de prueba será mayor. Estoy tratando de ahorrar 20 * 200 segundos actualmente.

0
Dani 12 nov. 2017 a las 08:43

2 respuestas

La mejor respuesta

La solución más simple es cambiar la espera implícita justo antes de verificar que un elemento no existe, y luego volver a cambiarlo. Puede hacer esto con la palabra clave establecer espera implícita de selenio.

Por ejemplo, su palabra clave podría verse así:

*** Keywords ***
verify element is not on page
    [Arguments]  ${locator}
    ${old_wait}=  Set selenium implicit wait  10
    run keyword and continue on failure
    ...  page should not contain element  ${locator}
    set selenium implicit wait  ${old_wait}
1
Bryan Oakley 12 nov. 2017 a las 13:28

El problema con el que se encuentra se relaciona con la cuestión de " Espera implícita frente a espera explícita ". Buscar en Internet le proporcionará muchas buenas explicaciones sobre por qué no se recomienda mezclar, pero creo que Jim Evans (creador de IE Webdriver) lo explicó muy bien en este respuesta de stackoverflow.

La mejora del rendimiento de su ejecución de prueba generalmente se realiza utilizando uno o ambos de estos:

  1. Acortar la duración de cada prueba individual
  2. Ejecute la prueba en paralelo.

Acortar la duración de una prueba normalmente significa tener el control total de la aplicación bajo prueba, lo que hace que el script sepa cuando la aplicación se cargó correctamente en el momento en que ocurre. Esto significa tener una espera implícita baja o nula y trabajar exclusivamente con esperas Fluent (esperando que ocurra una condición). Esto hará que sus pruebas se ejecuten a la velocidad que permite su aplicación.

Esto puede significar invertir tiempo en comprender la aplicación que prueba a nivel técnico. Al usar un personalizado locator todavía puede usar todas las palabras clave regulares de SeleniumLibrary y tener una función de espera centralizada.

La ejecución de pruebas en paralelo comienza con pruebas que se ejecutan de forma independiente y no dependen de otras pruebas. En Robot Framework, esto significa tener archivos de Test Suite que pueden ejecutarse independientemente unos de otros. La mayoría de nosotros usamos Pabot para ejecutar nuestras suites en paralelo y luego fusionar el archivo de registro.

Ejecutar varias pruebas de aplicaciones de navegador en paralelo significa ejecutar más de 1 navegador al mismo tiempo. Si prueba en Chrome, esto se puede hacer en un solo host, aunque no siempre se recomienda. Cuando ejecuta IE, necesita varias cajas / sesiones. Luego, comienza a requerir una solución de tipo Selenium Grid para distribuir la carga de ejecución en varias máquinas.

-1
A. Kootstra 12 nov. 2017 a las 09:47