Cómo gestionar las condiciones esperadas en Selenium

Cómo gestionar las condiciones esperadas en Selenium

Los errores llegan inesperadamente y pueden interrumpir el flujo normal de ejecución. Esto es algo que cada programador o probador enfrenta en un punto u otro mientras codifica y prueba. El lema principal de los probadores es depurar el error y resolverlo. En este artículo, comprenderemos qué excepciones hay en selenio y cómo manejarlas. Después de eso, veremos una descripción general de la jerarquía de la excepción. También hablaremos sobre los tipos de excepciones y la diferencia entre las excepciones verificadas y sin control, y la sintaxis básica de manejo.

¿Qué es el manejo de excepciones??

Una excepción es una ocurrencia durante una ejecución programada que evita que las instrucciones sigan el flujo regular del programa. Para decirlo en el otro sentido, cualquier cosa que haga que su caso de prueba se detenga mientras se ejecuta se conoce como una excepción. Cuando uno sucede, la aplicación se detiene y se produce un objeto de excepción. Después de que se plantea una excepción, el programa busca a alguien para manejarlo. El objeto de excepción proporciona mucha información de depuración, incluida la jerarquía de métodos, el número de línea donde ocurrió la excepción, el tipo de excepción y más. Como resultado, verá los diversos errores mientras trabaja con Selenium WebDriver dependiendo del código que escriba. A veces, el mismo código funciona bien, mientras que otros no. Cuando ejecuta sus scripts, puede encontrar algunas excepciones diferentes. Por lo tanto, cada vez que crea un script, se esfuerza por proporcionar la más alta calidad de código, por lo que si ocurre un primer problema, crea y arroja una excepción y finalmente lo maneja.

Jerarquía de excepciones

Las circunstancias excepcionales deben ser atrapadas por la aplicación del usuario utilizando esta clase. Otros sistemas de tiempo de ejecución de Java usan otra rama, como el error, para indicar los errores asociados con ella. Básicamente, bajo excepciones, hay dos tipos de excepciones: uno se verifica y el otro no está marcado. Veamos la diferencia entre estas dos excepciones: excepciones verificadas y no marcadas.

Una excepción verificada significa que es una excepción que es. La excepción sin control ocurre durante la ejecución a pesar de que el compilador lo verificó durante la compilación. Las excepciones verificadas se denominan esencialmente excepciones en tiempo de compilación, mientras que las excepciones no marcadas se denominan excepciones de tiempo de ejecución. Para comprender la excepción verificada, el programador debe manejar esta excepción para mantener el flujo normal de ejecución. Mientras que las excepciones de tiempo de ejecución se pueden ignorar y no habrá mucha diferencia en el flujo de ejecución del programa. Esta es la principal diferencia entre las excepciones marcadas y no marcadas.

Excepciones de clase

public static void main (string args [])
intentar

Catch (excepción e)

Así es como se ve la estructura de la excepción. Crea una clase y escribe un bloque de prueba dentro del método principal en el que escribe un código que puede plantear una excepción. Dentro del bloque de captura, escribe el código que tiene que ejecutar esto. El código plantea una excepción que se incluye en el bloque de try. Entonces, el código lanza una excepción en el bloque de try. Luego, para continuar con el flujo de ejecución normal, se maneja en el bloque de captura.

Tipos de excepciones en selenio

Existen diferentes tipos de excepciones que se mencionan a continuación:

WebDriverException

Si tiene instalado el controlador Chrome pero intenta realizar una actividad, se produce un error cuando intenta hacerlo. Esta excepción se eleva en un conductor de Mozilla Firefox que es un conductor de Geeko.

NosuchelementException

Esta excepción se lanza cuando el controlador web no encuentra el elemento en la estructura del tambor. Es decir, si no puede localizar un elemento en particular, no dice tal excepción del elemento. Es decir, si ese elemento no está presente, esa es la razón por la que no arroja tal elemento excepción.

intentar
conductor.Get ("https: // ABC.com/iframe ”);
conductor.findelement (por.ID ("TIMCD")).sendkeys (.. .KeyStaSend: "Hola");
Catch (NotFoundException e)
sistema.afuera.printin ("no encontrado");
mi.printStackTrace ();
;

Vimos una excepción "no encontrada" en este código. Primero, debes ir a la URL. Luego, cambie a la trama y luego escriba algo. Si no cambia y escribe directamente en un elemento, muestra el error "no encontrado" en el elemento de captura.

NosuchframeException

Si desea realizar una acción que cambie entre los cuadros y no puede hacerlo porque el marco infantil no está presente o el marco principal no puede navegar por el marco del niño, no se plantea dicha excepción de cuadro en tales casos.

NoalertpresentException

Este error aparece cuando intentamos realizar una función que es aceptada o rechazada y no es necesario en la ubicación que se necesita.

Del mismo modo, tenemos una alerta de JavaScript. Si no hacemos clic en la alerta de JavaScript, no habrá alerta en este caso. Si intentamos cambiar esa alerta, le da una noalertpresentException.

TimeOutException

Esta excepción se lanza cuando un comando no completa la tarea en una cantidad de tiempo determinada.

Estos son los métodos para manejar una excepción con sintaxis:

Prueba: se usa para especificar un bloque donde colocamos el código de excepción.

Intentar
// El código está escrito aquí
catch (excepcion_class_name)

Catch: este bloque se usa para manejar la excepción.

intentar
Catch (ExceptionName E1)
/// CATH BLOQUE CÓDIGO

Throw: Esto se usa para lanzar una excepción.

Catch (excepción e)
Sistema.afuera.println (“El elemento no está presente.");
tirar (e);

Lanza: se usa para declarar cuál es la excepción.

Public static void main (String [] args)
lanza interruptedException

Finalmente: se utiliza para ejecutar el código crucial del programa.

intentar
//// Código crítico aquí
Catch (Excepción E1)
[/// Catch Bloque Code
finalmente
//// Este bloque de código debe ejecutarse

Métodos para manejar una excepción con códigos

Primero, creamos una clase excepcional.

clase pública ExceptionHandlingExample

Primero lanzamos el controlador Chrome para lanzar Google y navegar a través de un sitio web en particular dado. Luego, usamos el hilo de sueño para dormir durante 3000, que son tres milisegundos. Entonces, encontramos un elemento por su nombre que es "falso.hacer clic". Ahora, este elemento no está presente, así que lo que hace es lanzar una excepción llamada excepción de "no hay tal elemento". Luego, después de ejecutar el código, veremos el controlador Chrome lanzado.

Webdriver mydriver = new ChromedRiver ();
mi conductor.Get (https: // www.Google.com);
Hilo.Sleep (3000);
mi conductor.findelement (por.nombre ("falso")).hacer clic;

No pasó nada porque la excepción se plantea aquí. Como podemos ver, arroja una excepción diciendo "no hay tal elemento".

Ahora, para manejarlo, usamos el bloque de intentos. En el bloque de prueba, use el siguiente comando:

Catch (nosuchelementException e)
Sistema.afuera.println (“El elemento no está presente.");
Sistema.afuera.println ("hola");

Sistema.afuera.println ("hola");

Escribimos el código que arroja una excepción. Este código ya lanza una excepción que no se encuentra dicho elemento. En el bloque de try, escribimos la excepción de "no hay tal elemento". Dentro de eso, imprimimos el "elemento no se encuentra" y "hola". Nuevamente, fuera del bloque de try, queremos verificar si el flujo normal de ejecución se lleva o no. Por eso imprimimos esta declaración fuera del bloque. Después de ejecutar el código, no arroja la excepción. Imprime "hola" dos veces: la primera vez está dentro del bloque de captura y la segunda vez está fuera del intento de atrapar el bloque. Para garantizar que el flujo normal de la ejecución no se interrumpe, así es como podemos manejar las excepciones:

En este ejemplo, vemos la falla de la condición esperada y cómo manejarla.

Lista li;
@Anular
público void interpretas (actor t)
li = browsetheweb.como (actor).finadall (por.XPATH ("// div [@class = 'Nav-Fill'] // a [@data-csa-c-type = 'link']");
para (int i = 0; i
Sistema.afuera.println ("-WebElementFacade Lista del nombre del menú ####" +Li.Consigo).getText ());

Después de ejecutar este código, obtenemos el resultado donde imprime todos los valores, pero la prueba falla en la ventana de salida.

Ahora, solucionamos este error. Si recorremos más de un valor antes de imprimir su valor, tenemos que verificar si el elemento se muestra o no o si se muestra el valor o no. Entonces, podemos imprimir ese valor. En ese caso, escribimos si el "li. conseguir.IS "se muestra la condición. Esto es para verificar la condición. Entonces, escribimos la declaración de impresión. Después de ejecutar el código, lee todos los valores. Como resultado, obtenemos la prueba. Lee todos los valores y, como resultado, pasamos la prueba.

Conclusión

Entendemos las condiciones esperadas en selenio. También discutimos todas las excepciones marcadas y sin control en el medio del artículo. Discutimos los tipos de excepciones con ejemplos. Por último, cubrimos cómo manejar las excepciones con los códigos. Este artículo contiene todos los detalles sobre el manejo de Selenium y las circunstancias anticipadas.