Sélénium - Traitement des exceptions

Lorsque nous développons des tests, nous devons nous assurer que les scripts peuvent continuer leur exécution même si le test échoue. Une exception inattendue serait levée si les pires scénarios ne sont pas gérés correctement.

Si une exception se produit en raison d'un élément introuvable ou si le résultat attendu ne correspond pas aux valeurs réelles, nous devrions intercepter cette exception et terminer le test de manière logique plutôt que de terminer le script brusquement.

Syntaxe

Le code réel doit être placé dans le bloc try et l'action après exception doit être placée dans le bloc catch. Notez que le bloc 'finally' s'exécute indépendamment du fait que le script ait levé une exception ou NON.

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.
}

Exemple

Si un élément n'est pas trouvé (pour une raison quelconque), nous devrions sortir de la fonction en douceur. Nous avons donc toujours besoin d'un bloc try-catch si nous voulons sortir en douceur d'une fonction.

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);
   }
}