implicit explicit wait selenium webdriver
Aprenda la espera implícita y explícita en Selenium WebDriver:
En el tutorial anterior, intentamos familiarizarlo con los distintos Operaciones condicionales y de bucle de WebDriver . Estos métodos condicionales a menudo tratan con casi todos los tipos de opciones de visibilidad para elementos web.
Avanzando en esto serie de entrenamiento de selenio gratis , discutiremos diferentes tipos de esperas proporcionadas por Selenium WebDriver . También discutiremos sobre v varios tipos de opciones de navegación disponible en WebDriver.
Las esperas ayudan al usuario a solucionar problemas mientras lo redirecciona a diferentes páginas web actualizando toda la página web y volviendo a cargar la nueva. elementos web. A veces también puede haber llamadas Ajax. Por lo tanto, se puede ver un retraso al recargar las páginas web y reflejar los elementos web.
Los usuarios a menudo se encuentran navegando a través de varias páginas web de un lado a otro. Por lo tanto, los comandos / métodos navigate () proporcionados por WebDriver ayudan al usuario a simular los escenarios en tiempo real navegando entre las páginas web con referencia al historial del navegador web.
WebDriver equipa al usuario con dos génesis de esperas para manejar la carga recurrente de la página s, cargas de elementos web, apariencia de ventanas, ventanas emergentes y mensajes de error y reflejo de elementos web en la página web.
- Espera implícita
- Espera explícita
Analicemos cada uno de ellos en detalle considerando el enfoque práctico.
Lo que vas a aprender:
- Espera implícita de WebDriver
- Espera explícita de WebDriver
- Condición esperada
- Navegación con WebDriver
- Conclusión
- Lectura recomendada
Espera implícita de WebDriver
Las esperas implícitas se utilizan para proporcionar un tiempo de espera predeterminado (digamos 30 segundos) entre cada paso de prueba / comando consecutivo en todo el script de prueba. Por lo tanto, el paso de prueba posterior solo se ejecutará cuando hayan transcurrido los 30 segundos después de ejecutar el paso / comando de prueba anterior.
Notas clave
- La espera implícita es una sola línea de un código y se puede declarar en el método de configuración del script de prueba.
- En comparación con la espera explícita, la espera implícita es transparente y sencilla. La sintaxis y el enfoque son más simples que la espera explícita.
Al ser fácil y simple de aplicar, la espera implícita también presenta algunos inconvenientes. Da lugar al tiempo de ejecución del script de prueba ya que cada uno de los comandos dejaría de esperar un tiempo estipulado antes de reanudar la ejecución.
Por lo tanto, para solucionar este problema, WebDriver introduce esperas explícitas en las que podemos aplicar esperas explícitamente siempre que surja la situación en lugar de esperar a la fuerza mientras se ejecutan cada uno de los pasos de prueba.
Declaraciones de importación
importar java.util.concurrent.TimeUnit - Para poder acceder y aplicar la espera implícita en nuestros scripts de prueba, estamos obligados a importar este paquete en nuestro script de prueba.
Sintaxis
drv .manage (). timeouts (). implicitlyWait (10, TimeUnit. SEGUNDOS );
Incluya la línea de código anterior en su script de prueba poco después de la instanciación de la variable de instancia de WebDriver. Por lo tanto, esto es todo lo que se requiere para establecer una espera implícita en su script de prueba.
Tutorial de código
La espera implícita obliga a pasar dos valores como parámetros. El primer argumento indica el tiempo en dígitos numéricos que el sistema debe esperar. El segundo argumento indica la escala de medición del tiempo. Por lo tanto, en el código anterior, hemos mencionado los '30' segundos como tiempo de espera predeterminado y la unidad de tiempo se ha establecido en 'segundos'.
Espera explícita de WebDriver
Las esperas explícitas se utilizan para detener la ejecución hasta que se cumpla una condición particular o haya transcurrido el tiempo máximo. A diferencia de las esperas implícitas, las esperas explícitas se aplican solo a una instancia en particular.
WebDriver presenta clases como WebDriverWait y ExpectedConditions para aplicar esperas explícitas en los scripts de prueba. En el ámbito de esta discusión, usaremos 'gmail.com' como muestra.
Escenario a automatizar
- Inicie el navegador web y abra 'gmail.com'
- Ingrese un nombre de usuario válido
- Ingrese una contraseña válida
- Haga clic en el botón de inicio de sesión
- Espere a que el botón Redactar esté visible después de cargar la página
Código WebDriver usando espera explícita
Tenga en cuenta que para la creación de secuencias de comandos, estaríamos utilizando el proyecto 'Learning_Selenium' creado en los tutoriales anteriores.
Paso 1 : Cree una nueva clase Java denominada 'Wait_Demonstration' en el proyecto 'Learning_Selenium'.
Paso 2 : Copie y pegue el siguiente código en la clase 'Wait_Demonstration.java'.
A continuación se muestra el script de prueba que es equivalente al escenario mencionado anteriormente.
|_+_|Declaraciones de importación
- importar org. openqa.selenium.support.ui.ExpectedConditions
- importar org. openqa.selenium.support.ui.WebDriverWait
- Importe los paquetes anteriores antes de la creación del script. Los paquetes hacen referencia a la clase Select que se requiere para manejar el menú desplegable.
Creación de instancias de objetos para la clase WebDriverWait
WebDriverWait esperar = nuevo WebDriverWait ( drv ,30);
Creamos una variable de referencia 'esperar' para la clase WebDriverWait y la instanciamos usando la instancia de WebDriver y el tiempo máximo de espera para que la ejecución se detenga. El tiempo máximo de espera indicado se mide en 'segundos'.
La creación de instancias de WebDriver se discutió en los tutoriales iniciales de WebDriver.
Condición esperada
|_+_|El comando anterior espera una cantidad de tiempo estipulada o que ocurra una condición esperada, lo que ocurra o transcurra primero.
Por lo tanto, para poder hacer esto, usamos la variable de referencia 'esperar' de la clase WebDriverWait creada en el paso anterior con la clase ExpectedConditions y una condición real que se espera que ocurra. Por lo tanto, tan pronto como se produzca la condición esperada, el control del programa pasaría al siguiente paso de ejecución en lugar de esperar forzosamente los 30 segundos completos.
En nuestra muestra, esperamos que el botón 'redactar' esté presente y se cargue como parte de la carga de la página de inicio y, por lo tanto, seguimos adelante con la llamada al comando de clic en el botón 'redactar'.
Tipos de condiciones esperadas
La clase ExpectedConditions proporciona una gran ayuda para lidiar con escenarios en los que tenemos que determinar que ocurra una condición antes de ejecutar el paso de prueba real.
La clase ExpectedConditions viene con una amplia gama de condiciones esperadas a las que se puede acceder con la ayuda de la variable de referencia WebDriverWait y el método until ().
Analicemos algunos de ellos en profundidad:
#1) elementToBeClickable() - La condición esperada espera a que se pueda hacer clic en un elemento, es decir, debe estar presente / mostrado / visible en la pantalla y habilitado.
Código de muestra
esperar.hasta (ExpectedConditions.elementToBeClickable (By.xpath ( '// div (contiene (texto (), 'COMPOSE'))' )));
# 2) textToBePresentInElement () - La condición esperada espera a que un elemento tenga un determinado patrón de cadena.
Código de muestra
esperar.hasta (ExpectedConditions.textToBePresentInElement (By.xpath ( '// div (@ id = 'OlvidéPass''), 'texto que se encontrará' ));
preguntas y respuestas de la entrevista del analista de qa
# 3) alertIsPresent () - La condición esperada espera a que aparezca un cuadro de alerta.
Código de muestra
wait.until (ExpectedConditions.alertIsPresent ())! = null);
# 4) titleIs () - La condición esperada espera una página con un título específico.
Código de muestra
esperar.hasta (ExpectedConditions.titleIs ( 'Gmail' ));
# 5) frameToBeAvailableAndSwitchToIt () - La condición esperada espera a que un marco esté disponible y luego, tan pronto como el marco está disponible, el control cambia a él automáticamente.
Código de muestra
wait.until (ExpectedConditions.frameToBeAvailableAndSwitchToIt (By.id (“ nuevo marco ”)));
Existe una acción de usuario muy común en la que el usuario hace clic en los botones de avance y retroceso del navegador web hacia atrás y hacia adelante para navegar a las diferentes páginas web visitadas en la sesión actual en el historial del navegador. Por lo tanto, para simular tales acciones realizadas por los usuarios, WebDriver introduce los comandos Navigate.
Examinemos estos comandos en detalle:
# 1) navegar (). Atrás ()
Este comando permite al usuario navegar a la página web anterior.
Código de muestra:
driver.navigate (). back ();
El comando anterior no requiere parámetros y lleva al usuario a la página web anterior en el historial del navegador web.
# 2) navegar (). Adelante ()
Este comando permite al usuario navegar a la siguiente página web con referencia al historial del navegador.
Código de muestra:
driver.navigate (). forward ();
El comando anterior no requiere parámetros y lleva al usuario a la siguiente página web en el historial del navegador web.
# 3) navegar (). Actualizar ()
Este comando permite al usuario actualizar la página web actual recargando así todos los elementos web.
Código de muestra:
driver.navigate (). refresh ();
El comando anterior no requiere parámetros y recarga la página web.
# 4) navegar (). A ()
Este comando permite al usuario iniciar una nueva ventana del navegador web y navegar a la URL especificada.
Código de muestra:
driver.navigate (). to ('http://google.com');
El comando anterior requiere una URL web como parámetro y luego abre la URL especificada en un navegador web recién lanzado.
Conclusión
En esto Espera implícita y explícita en el tutorial de Selenium WebDriver , intentamos que se familiarice con las esperas de WebDriver. Discutimos y ejercitamos tanto las esperas explícitas como las implícitas. Al mismo tiempo, también discutimos los diferentes comandos de navegación.
Aquí están los puntos cruciales de este artículo:
- WebDriver permite al usuario elegir entre las esperas disponibles para manejar situaciones en las que el flujo de ejecución puede requerir una suspensión durante unos segundos para cargar los elementos web o para cumplir con una condición específica. Hay dos tipos de esperas disponibles en WebDriver.
- Espera implícita
- Espera explícita
- Esperas implícitas se utilizan para proporcionar un tiempo de espera predeterminado entre cada paso / comando de prueba consecutivo en todo el script de prueba. Por lo tanto, el siguiente paso de prueba solo se ejecutará cuando haya transcurrido el tiempo especificado después de ejecutar el paso de prueba / comando anterior.
- Esperas explícitas se utilizan para detener la ejecución hasta que se cumpla una condición particular o haya transcurrido el tiempo máximo. A diferencia de las esperas implícitas, las esperas explícitas se aplican solo a una instancia en particular.
- WebDriver presenta clases como WebDriverWait y ExpectedConditions para hacer cumplir esperas explícitas
- Condiciones esperadas La clase proporciona una gran ayuda para lidiar con escenarios en los que tenemos que determinar que ocurra una condición antes de ejecutar el paso de prueba real.
- La clase ExpectedConditions viene con una amplia gama de condiciones esperadas a las que se puede acceder con la ayuda de la variable de referencia WebDriverWait y el método until ().
- Métodos Navigate () Los comandos / se utilizan para simular el comportamiento del usuario mientras navega entre varias páginas web de un lado a otro.
Siguiente tutorial n. ° 16 : Pasando al siguiente tutorial de la lista, familiarizaríamos a los usuarios con varios tipos de alertas que pueden aparecer al acceder a sitios web y sus métodos de manejo en WebDriver. Los tipos de alertas en los que nos centraríamos son principalmente: ventanas emergentes de alerta basadas en ventanas y ventanas emergentes de alerta basadas en la web. Como sabemos que el manejo de ventanas emergentes basadas en ventanas está más allá de las capacidades de WebDriver, también utilizaríamos algunas utilidades de terceros para manejar ventanas emergentes.
Nota para los lectores : Hasta entonces, los lectores pueden automatizar los escenarios con varias cargas de página y elementos dinámicos que aparecen en la pantalla utilizando las diversas condiciones esperadas y los comandos de navegación.
Lectura recomendada
- Tutorial de Cucumber Selenium: Integración de Cucumber Java Selenium WebDriver
- Introducción a Selenium WebDriver - Tutorial de Selenium n. ° 8
- Implementación de nuestro primer script de WebDriver - Tutorial de Selenium WebDriver # 10
- Preguntas frecuentes sobre selenio
- Cómo manejar alertas / ventanas emergentes en Selenium WebDriver - Tutorial de Selenium n. ° 16
- Guía para generar informes de extensión en Selenium WebDriver
- Cómo ejecutar Selenium WebDriver en diferentes navegadores populares
- Configuración e instalación completa de WebDriver con Eclipse - Tutorial de Selenium n. ° 9