Tomar captura de pantalla con Selenium WebDriver
Una de las partes más importantes en la automatización de pruebas es la parte de los reportes y la manera de presentar las evidencias, las cuales son un respaldo para saber que efectivamente nuestro sistema se encuentra estable.
El frameworkde Selenium WebDriver nos ofrece una clase para poder tomar capturas de pantalla : TakesScreenshot.
A continuación coloco un ejemplo para utilizar dicha clase utilizando la funcionalidad de org.apache.commons.io.FileUtils
import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.openqa.selenium.By; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; /*** * Realiza capturas de pantalla en la automatizacion de pruebas con Selenium * WebDriver y deja las imagenes en un directorio especificado. Para un mejor * desempeño se recomienda la utilizacion de la libreria apache.commons.io.FileUtils * la cual permite trabajar mucho mejor con archivos, ejemplo copiando archivos * binarios como las imagenes * * ver : http://seleniumhq.org/docs/04_webdriver_advanced.html * ver : http://commons.apache.org/io/download_io.cgi * @author codesandtags * */ public class TakeScreenShotSelenium { public static void main(String[] args) { //Se utiliza un driver de Firefox WebDriver driver = new FirefoxDriver(); //Pagina principal driver.navigate().to("http://codesandtags.org"); takeScreenShotTest(driver, "Home"); //Pagina de Testing driver.findElement(By.linkText("Testing")).click(); takeScreenShotTest(driver, "Testing"); //Se finaliza el uso del driver driver.close(); } /** * Toma una impresion de pantalla y la guarda en un directorio donde quedan * todas las evidencias de prueba * * @param driver * @throws IOException */ public static void takeScreenShotTest(WebDriver driver, String imageName) { //Directorio donde quedaran las imagenes guardadas File directory = new File("d:\\imagenes"); try { if (directory.isDirectory()) { //Toma la captura de imagen File imagen = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); //Mueve el archivo a la carga especificada con el respectivo nombre FileUtils.copyFile(imagen, new File(directory.getAbsolutePath() + "\\" + imageName + ".png")); } else { //Se lanza la excepcion cuando no encuentre el directorio throw new IOException("ERROR : La ruta especificada no es un directorio!"); } } catch (IOException e) { //Impresion de Excepciones e.printStackTrace(); } } }
Ejemplos de las imagenes tomadas
Referencias : http://seleniumhq.org/docs/04_webdriver_advanced.html
Add your comment