【问题标题】:HTML : Unable to view the base64 image in html reportHTML:无法在 html 报告中查看 base64 图像
【发布时间】:2018-11-08 01:17:04
【问题描述】:

在 selenium 中,我通过 javamail API 自动发送范围报告。我正在使用 base 64 编码器来生成屏幕截图并附加到报告中。问题是屏幕截图显示为缩略图,但是当我放大它时,它会显示编码图像。enter image description here

String scnShot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BASE64);
String s="data:image/png;base64,"+scnShot;
test.log(LogStatus.INFO,test.addScreenCapture(s));

【问题讨论】:

  • 扩展版本?
  • 我也面临同样的问题。我的版本是 3.1.2。请建议

标签: java html image base64 selenium-extent-report


【解决方案1】:

来自 extent_reports GIT - you can check here

Base64 图像目前在此版本中不受支持,因为它们在以前的版本中引起了问题......

【讨论】:

    【解决方案2】:

    如果您使用的是 ExtentTest,那么这个功能肯定会起作用,您可以添加带有描述的屏幕截图...

    public void LOGWithScreenshot(ExtentTest logger, String status, String TestDescription) throws IOException, InvalidFormatException {
        String Base64StringofScreenshot="";
        File src = ((TakesScreenshot) driverThread).getScreenshotAs(OutputType.FILE);
        byte[] fileContent = FileUtils.readFileToByteArray(src);
        Base64StringofScreenshot = "data:image/png;base64,"+Base64.getEncoder().encodeToString(fileContent);
        if(status.equalsIgnoreCase("pass"))
            logger.log(LogStatus.PASS, TestDescription+"\n"+logger.addBase64ScreenShot(Base64StringofScreenshot));
        else
            logger.log(LogStatus.FAIL, TestDescription+"\n"+logger.addBase64ScreenShot(Base64StringofScreenshot));
    }
    

    【讨论】:

    • 感谢您解决了我在 Extent 报告中附加范围报告时遇到的问题。
    【解决方案3】:

    我已经在 selenium C# 中完成了这个,你可以修改以在 Java 中使用它:

    您只需要将图像转换为 Base64 图像并使用 Media entity builder。

    Screenshot file = ((ITakesScreenshot)driver).GetScreenshot();
    string image = file.AsBase64EncodedString;
    
    exTest.Pass(msg, MediaEntityBuilder.CreateScreenCaptureFromBase64String(image).Build());
    System.Diagnostics.Trace.WriteLine("PASS >>>>  " + msg);
    

    【讨论】:

      【解决方案4】:

      由于以下代码而出现错误。您正在使用 test.addScreencapture,它需要屏幕捕获文件路径作为参数,并且您正在传递 base64 字符串。

      test.log(LogStatus.INFO,test.addScreenCapture(s));
      

      要在范围日志中传递base64string,只需使用以下代码

      test.info("your message "+ s)
      

      其中 s 是你的 base64 字符串

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-14
        • 2021-04-18
        • 1970-01-01
        • 1970-01-01
        • 2016-07-08
        • 2013-01-20
        • 1970-01-01
        相关资源
        最近更新 更多