HTML: невозможно просмотреть изображение base64 в отчете html

В селене я автоматически рассылаю отчеты об экстентах через 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 ответа

Если вы используете 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));
}

ошибка возникает из-за кода ниже. ты используешь test.addScreencaptureкоторый ожидает путь к файлу снимка экрана в качестве параметра, и вы передаете строку base64.

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

Чтобы передать base64string в журнал экстентов, просто используйте код ниже

      test.info("your message "+ s)

где s - ваша строка base64

Из экстент_репортажей GIT - вы можете проверить здесь

Образы Base64 в настоящее время не поддерживаются в этой версии из-за проблем, которые они вызвали в предыдущих версиях и....

Я сделал это в selenium C#, вы можете изменить это на Java:

Вам просто нужно преобразовать изображение в изображение Base64 и использовать конструктор объектов мультимедиа.

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

exTest.Pass(msg, MediaEntityBuilder.CreateScreenCaptureFromBase64String(image).Build());
System.Diagnostics.Trace.WriteLine("PASS >>>>  " + msg);
Другие вопросы по тегам