Selênio - Tratamento de exceções
Quando estamos desenvolvendo testes, devemos garantir que os scripts possam continuar sua execução mesmo se o teste falhar. Uma exceção inesperada seria lançada se os piores cenários não fossem tratados adequadamente.
Se ocorrer uma exceção devido a um elemento não encontrado ou se o resultado esperado não corresponder aos reais, devemos capturar essa exceção e encerrar o teste de maneira lógica, em vez de encerrar o script abruptamente.
Sintaxe
O código real deve ser colocado no bloco try e a ação após a exceção deve ser colocada no bloco catch. Observe que o bloco 'finalmente' é executado independentemente de o script ter lançado uma exceção ou NÃO.
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.
}
Exemplo
Se um elemento não for encontrado (por algum motivo), devemos sair da função sem problemas. Portanto, sempre precisamos ter um bloco try-catch se quisermos sair suavemente de uma função.
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);
}
}