Manejo de excepciones en Selenium WebDriver

¿Qué es una excepción?

«Excepción» es un término estándar utilizado por los programadores de software independientemente de cualquier lenguaje de programación que se utilice para escribir el código. La «excepción» como su nombre indica es un evento inusual o un caso poco común que interrumpe el flujo normal de la ejecución del programa.

Puede haber varias razones detrás de la aparición de excepciones que indican la interrupción en el flujo del programa. Se crea un objeto de excepción cuando se encuentra una excepción, que contiene información de depuración como el número de línea, el tipo de excepción, la jerarquía de métodos. Una vez que se crea el objeto de excepción y se entrega al entorno de tiempo de ejecución, este proceso se denomina «Lanzar la excepción».

Las excepciones se clasifican principalmente en dos tipos: excepción marcada y excepción no marcada

  • Excepciones marcadas: estas excepciones se manejan mientras se escribe el código antes de la compilación del código y, por lo tanto, se examinan en el momento de la compilación.
  • Excepciones no verificadas: estas excepciones se generan en tiempo de ejecución y son más catastróficas en comparación con la excepción marcada.

¿Qué es el manejo de excepciones en Selenium WebDriver?

El manejo de excepciones es un proceso o mecanismo que detecta y resuelve excepciones de tiempo de ejecución y errores de comunicación en Selenium.

10 excepciones comunes en Selenium WebDriver

Se puede encontrar una lista completa de excepciones de Selenium WebDriver en la documentación proporcionada por Selenium, pero a continuación se presentan algunas excepciones estándar de Selenium que se enfrentan al ejecutar una prueba:

  1. ElementNotVisibleException: a pesar de que el elemento está presente en el DOM, no es visible (no puede ser interactivo). Por ejemplo, elementos definidos en HTML con type = «hidden»
  2. ElementNotSelectableException: un elemento está deshabilitado (no se puede hacer clic / seleccionar) a pesar de estar presente en el DOM
  3. NoSuchElementException: Webdriver no puede determinar los elementos durante el tiempo de ejecución, es decir, el método FindBy no puede encontrar un componente en particular
  4. NoSuchFrameException: Webdriver intenta cambiar a un frame no válido, que no está disponible
  5. NoAlertPresentException : Webdriver está intentando cambiar a una alerta no válida, que no está disponible
  6. NoSuchWindowException : Webdriver está intentando cambiar a una ventana no válida, que no está disponible
  7. StaleElementReferenceException : el elemento referenciado ya no está presente en la página DOM (una referencia a un componente ahora es obsoleta). Por ejemplo, el elemento pertenece a un frame diferente al actual o el usuario se ha desplazado a otra página
  8. SessionNotFoundException : Webdriver está actuando inmediatamente después de «salir» del navegador
  9. TimeoutException : el comando no se completó en el tiempo especificado. Por ejemplo, el elemento no se mostró en el tiempo especificado. Esto se encuentra especialmente cuando se trabaja con esperas de selenium webdriver
  10. WebDriverException : Webdriver está actuando inmediatamente después de ‘cerrar’ el navegador

Ahora, como somos conscientes de las Excepciones comunes que uno puede enfrentar en Selenium WebDriver, el siguiente paso es comprender «¿Cómo manejar esas Excepciones?»

Manejo de excepciones en Selenium WebDriver

A continuación se detallan algunas formas estándar de utilizar las excepciones en Selenium WebDriver:

Try-catch: este método puede detectar excepciones mediante el uso de una combinación de las palabras clave try y catch. Try indica el inicio del bloque o los pasos que se quiere intentar realizar, y Catch se coloca al final del bloque try para capturar, manejar o resolver la excepción. El código que se escribe dentro del bloque Try/Catch se denomina «código protegido». El siguiente código representa la sintaxis del bloque Try/Catch en Java:

try
   {
     //Código
   }
catch(Exception e)
  {
     //Código para manejar la excepción
  }

Múltiples bloques de catch : hay varios tipos de excepciones, y uno puede esperar más de una excepción de un solo bloque de código. Se utilizan múltiples bloques catch para manejar cada tipo de excepción por separado con un bloque de código separado. Uno puede usar más de dos bloques de catch, y no hay limitación en el número de bloques de catch. El siguiente código representa la sintaxis de múltiples bloques catch:

try
   {
      //Some code
   }
catch(ExceptionType1 e1)
   {
     //Code for Handling the Exception 1
   }
catch(ExceptionType2 e2)
   {
     //Code for Handling the Exception 2
   }

Throw/Throws: Cuando un programador quiere generar una Excepción explícitamente, la palabra clave Throw se usa para lanzar la Excepción al tiempo de ejecución para manejarla. Cuando un programador está lanzando una Excepción sin manejarla, entonces él/ella necesita usar la palabra clave Throws en la firma del método para permitir que el programa que llama entienda las excepciones que puede arrojar el método. La sintaxis de Throws es la siguiente:

public static void algunaFuncion() throws Exception
{
try
   {
     //Escribe tu código aquí
   }
catch (Exception e)
   {
      //Haz lo que quieras hacer aquí

      //Ahora devuelva la excepción al sistema
      throw(e);
   }
}

Excepciones múltiples: se pueden mencionar varias excepciones en la cláusula Throws. Mire el siguiente ejemplo:

public static void anyFunction() throws ExceptionTipo1, ExceptionTipo2

{
 try
   {
     //Escribe tu código aquí
   }
 catch (ExceptionTipo1 e1)
   {
    //Código para manejar la excepción 1
   }
 catch (ExceptionTipo2 e2)
   {
    //Código para manejar la excepción 1
   }
}

Finally: la palabra clave Finally se usa para crear un bloque de código debajo del bloque try. Este bloque de código Finally siempre se ejecuta independientemente de lo que ocurra en una excepción

try
  {
    //Tu código
  }
catch(ExceptionType1 e1)
  {
    //Bloque para manejar la excepción 1
  }
catch(ExceptionType2 e2)
  {
    //Bloque para manejar la excepción 2
  }
catch(ExceptionType3 e3)
  {
    //Bloque para manejar la excepción 3
  }

finally
   {
     //El código definido en este bloque siempre se ejecutará
   }

También se pueden usar los siguientes métodos para mostrar la información de la excepción:

  • printStackTrace(): imprime el seguimiento de la pila, el nombre de la excepción y otra descripción útil
  • toString(): devuelve un mensaje de texto que describe el nombre y la descripción de la excepción.
  • getMessage(): muestra la descripción de la excepción

Conclusión:

  • El manejo de excepciones es una parte muy crucial de cada script Selenium Webdriver
  • No se pueden ignorar las excepciones, ya que interrumpen la ejecución normal de los programas.
  • Uno puede escribir scripts óptimos y robustos manejando las Excepciones de maneras únicas
  • Los programadores pueden manejar excepciones estándar usando varias técnicas como Try/catch, Múltiple bloques de catch, Finally y otras dependiendo de los requisitos de los scripts
  • Para analizar las excepciones en detalle, también se pueden usar métodos como printStackTrace(), toString() y getMessage()

Compartir artículo

Leave Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.