HTML: 无法在HTML报告中查看base64图片

3

我正在使用JavaMail API在Selenium中自动发送extent报告。 我正在使用base64编码器生成屏幕截图并附加到报告中。 问题是屏幕截图可见为缩略图,但是当我放大它时,它显示了编码后的图像。点击此处查看图片

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

enter image description here


扩展版本是什么? - Anshoo
我遇到了同样的问题。我的版本是3.1.2。请建议。 - Atul KS
4个回答

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报告到Extent报告中遇到的问题。 - Sameera De Silva

0

错误是由以下代码引起的。您正在使用test.addScreencapture,它期望将屏幕截图文件路径作为参数,并且您正在传递base64字符串。

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

要将base64string传递到extent日志中,只需使用以下代码

test.info("your message "+ s)

其中 s 是您的 base64 字符串


0

从extent_reports GIT - 您可以在此处检查

由于它们在先前的版本中引起的问题,因此当前版本目前不支持Base64图像...


0

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

你只需要将图像转换为Base64图像并使用Media实体构建器即可。

Screenshot file = ((ITakesScreenshot)driver).GetScreenshot();
string image = file.AsBase64EncodedString;

exTest.Pass(msg, MediaEntityBuilder.CreateScreenCaptureFromBase64String(image).Build());
System.Diagnostics.Trace.WriteLine("PASS >>>>  " + msg);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接