Contamos con la solución a esta aprieto, o por lo menos eso pensamos. Si continuas con dudas puedes dejarlo en el apartado de comentarios, para nosotros será un gusto ayudarte
Solución:
Algunas búsquedas rápidas me llevaron a esto:
http://blogs.steeplesoft.com/posts/2012/grabbing-screenshots-of-failed-selenium-tests.html
Básicamente, recomienda crear un JUnit4 Rule
que envuelve la prueba Statement
en un bloque try/catch en el que llama:
imageFileOutputStream.write(
((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES));
¿Funciona eso para tu problema?
Si desea agregar rápidamente este comportamiento a TODOS sus pruebas en la ejecución puede utilizar el RunListener
interfaz para escuchar fallas en las pruebas.
public class ScreenshotListener extends RunListener
private TakesScreenshot screenshotTaker;
@Override
public void testFailure(Failure failure) throws Exception
File file = screenshotTaker.getScreenshotAs(OutputType.File);
// do something with your file
Agregue el oyente a su corredor de prueba de esta manera …
JUnitCore junit = new JUnitCore();
junit.addListener(new ScreenshotListener((TakesScreenShots) webDriver));
// then run your test...
Result result = junit.run(Request.classes(FullTestSuite.class));
Si desea tomar una captura de pantalla en caso de falla de la prueba, agregue esta clase
import java.io.File;
import java.io.IOException;
import java.util.UUID;
import org.apache.commons.io.FileUtils;
import org.junit.rules.MethodRule;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.Statement;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
public class ScreenShotOnFailure implements MethodRule
private WebDriver driver;
public ScreenShotOnFailure(WebDriver driver)
this.driver = driver;
public Statement apply(final Statement statement, final FrameworkMethod frameworkMethod, final Object o)
return new Statement()
@Override
public void evaluate() throws Throwable
try
statement.evaluate();
catch (Throwable t)
captureScreenShot(frameworkMethod.getName());
throw t;
public void captureScreenShot(String fileName) throws IOException
File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
fileName += UUID.randomUUID().toString();
File targetFile = new File("./Screenshots/" + fileName + ".png");
FileUtils.copyFile(scrFile, targetFile);
;
Y antes de todas las pruebas, debe usar esta regla:
@Rule
public ScreenShotOnFailure failure = new ScreenShotOnFailure(driver));
@Before
public void before()
...
Aquí puedes ver las comentarios y valoraciones de los lectores
Nos puedes avalar nuestra publicación añadiendo un comentario o dejando una puntuación te damos la bienvenida.