4

在 selenium 中,我通过 javamail API 自动邮寄范围报告。我正在使用 base 64 编码器来生成屏幕截图并附加到报告中。问题是屏幕截图显示为缩略图,但是当我缩放它时,它会显示编码图像。在此处输入图像描述

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

在此处输入图像描述

4

4 回答 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));
}
于 2019-02-01T07:42:33.823 回答
1

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

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

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

test.info("your message "+ s)

其中 s 是你的 base64 字符串

于 2021-12-13T12:25:25.363 回答
0

我在 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);
于 2019-12-02T12:02:29.973 回答
0

从 extent_reports GIT -你可以在这里查看

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

于 2018-12-27T13:38:38.073 回答