Selenio - Manejo de excepciones

Cuando estamos desarrollando pruebas, debemos asegurarnos de que los scripts puedan continuar su ejecución incluso si la prueba falla. Se produciría una excepción inesperada si los peores escenarios no se manejan correctamente.

Si se produce una excepción debido a que no se encuentra un elemento o si el resultado esperado no coincide con los datos reales, debemos detectar esa excepción y finalizar la prueba de una manera lógica en lugar de terminar el script abruptamente.

Sintaxis

El código real debe colocarse en el bloque try y la acción después de la excepción debe colocarse en el bloque catch. Tenga en cuenta que el bloque 'finalmente' se ejecuta independientemente de si el script ha generado una excepción o NO.

try {
   //Perform Action
} catch(ExceptionType1 exp1) {
   //Catch block 1
}  catch(ExceptionType2 exp2) {
   //Catch block 2
} catch(ExceptionType3 exp3) {
   //Catch block 3 
} finally {
   //The finally block always executes.
}

Ejemplo

Si no se encuentra un elemento (por alguna razón), deberíamos salir de la función sin problemas. Por lo tanto, siempre debemos tener un bloque try-catch si queremos salir sin problemas de una función.

public static WebElement lnk_percent_calc(WebDriver driver)throws Exception {
   try {
      element = driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a")); 
      return element;
   } catch (Exception e1) {
      // Add a message to your Log File to capture the error
      Logger.error("Link is not found.");
      
      // Take a screenshot which will be helpful for analysis.
      File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
      FileUtils.copyFile(screenshot, new File("D:\\framework\\screenshots.jpg"));
      throw(e1);
   }
}