ExtentReports - 不在报告中的屏幕截图 - 损坏的图像

Sto*_*ain 5 java selenium screenshot extentreports

我正在尝试将屏幕截图添加到我的 ExtentReport HTML 文件中,但由于某种原因,该图像不存在,即使它确实存在并且控制台显示它正在查看正确的位置(href 是正确的)。

这是最新的试用代码:

Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(driver);
String destination = getScreenshotPath();
ImageIO.write(screenshot.getImage(), "IMG", new File(destination));
test.fail("Details: " + test.addScreenCaptureFromPath(destination));
Run Code Online (Sandbox Code Playgroud)

屏幕截图将保存在目标中。当我尝试调试模式或查看报告时,它打印为:

详细信息:com.aventstack.extentreports.ExtentTest@62041567,下面有一张损坏的图片:

在此处输入图片说明

Sto*_*ain 6

正如所建议的 - 绝对路径可能是一个解决方案,但我不想走那条路。

我发现一个解决方案是将图像存储在生成报告的同一目录中,将图像名称指定为 .addScreenCaptureFromPath( ScreenshotName.PNG ) 并且它可以完美地工作。


Mig*_*sio 5

我用的是绝对路径

注意:从浏览器检查损坏的图像以验证图像的绝对路径

截图:

  public static String TakesScreenshot(IWebDriver driver, string FileName)
    {

        string pathProject = AppDomain.CurrentDomain.BaseDirectory;
        string pathScreen = pathProject.Replace("\\bin\\Debug", "");
        string path = pathScreen + "project/Test-output/Images/";

        StringBuilder TimeAndDate = new StringBuilder(DateTime.Now.ToString());
        TimeAndDate.Replace("/", "_");
        TimeAndDate.Replace(":", "_");
        TimeAndDate.Replace(" ", "_");

        string imageName = FileName + TimeAndDate.ToString();

        ((ITakesScreenshot)driver).GetScreenshot().SaveAsFile(path + "_" + imageName + "." + System.Drawing.Imaging.ImageFormat.Jpeg);

        return path + "_" + imageName + "." + "jpeg";
    }
Run Code Online (Sandbox Code Playgroud)

将图像附加到报告中,并附上预览方法的路径: 具体步骤:

ExtentTest.Fail("message", MediaEntityBuilder.CreateScreenCaptureFromPath(TakeScreenShot.TakesScreenshot(driver, "Fatal")).Build());
Run Code Online (Sandbox Code Playgroud)

使用“TakesScreenshot”方法截取屏幕截图

版本 ExtentReport:3、C#、NUnit 3

使用Java:

        <dependency>
        <groupId>com.relevantcodes</groupId>
        <artifactId>extentreports</artifactId>
        <version>2.41.2</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

是:

 ExtentTestManager.getTest().log(LogStatus.ERROR, ExtentTestManager.getTest().addScreenCapture("//ABOLUTE/PATH/IMAGE.PNG"));
Run Code Online (Sandbox Code Playgroud)

问候。