java .io.IOException: медиа не было найдено в отчете экстента при добавлении снимка экрана в отчете html - PullRequest
1 голос
/ 28 мая 2020

Я получаю снимок экрана в формате base64 при выполнении тестового класса; он показывает, что ошибка Media not found. Может ли кто-нибудь сообщить мне, где мне не хватает кода

Код:

public static String captureScreenAsBase64(WebDriver driver, String screenshotName) throws IOException {
        try {
            TakesScreenshot newScreen = (TakesScreenshot) driver;
            String scnShot = newScreen.getScreenshotAs(OutputType.BASE64);
            return "data:image/jpg;base64, " + scnShot ;
        } catch (WebDriverException e) {
            e.printStackTrace();
        }
        return screenshotName;
    }
@AfterMethod(alwaysRun = true)
public void getResult(ITestResult result) throws Exception {
    if (result.getStatus() == ITestResult.FAILURE) {
        logger.log(Status.FAIL,
                MarkupHelper.createLabel(result.getName() + " - Test Case Failed", ExtentColor.RED));
        logger.log(Status.FAIL,
                MarkupHelper.createLabel(result.getThrowable() + " - Test Case Failed", ExtentColor.RED));

        String screenshotPath = TestUtil.captureScreenAsBase64(driver, result.getName());
        logger.fail("Snapshot below: " + logger.addScreenCaptureFromPath(screenshotPath));

    } else if (result.getStatus() == ITestResult.SKIP) {
        logger.log(Status.SKIP,
                MarkupHelper.createLabel(result.getName() + " - Test Case Skipped", ExtentColor.ORANGE));
    } else if (result.getStatus() == ITestResult.SUCCESS) {
        logger.log(Status.PASS,
                MarkupHelper.createLabel(result.getName() + " Test Case PASSED", ExtentColor.GREEN));
    }
    extent.flush();
}

Exception:
java.io.IOException: Media was not found

Ответы [ 2 ]

0 голосов
/ 12 июня 2020

Вы делаете:

logger.fail("Snapshot below: " + logger.addScreenCaptureFromPath(screenshotPath));

И пытаетесь прикрепить к нему строку base64. Вам необходимо использовать метод:

logger.addScreenCaptureFromBase64String(base64)

Примечание: вам не нужны эти данные: image / jpg; base64, так как это будет сделано автоматически.

0 голосов
/ 31 мая 2020

Попробуйте использовать отчет об очаровании. Это отчет с открытым исходным кодом, который поддерживает многопоточность в appium, в отличие от отчета по степени. Следующий код прикрепит снимок экрана к отчету о сбое теста,

public class TestListener implements ITestListener {
...
@Override
    public void onTestFailure(ITestResult iTestResult) {
            try {
                byte[] screenShot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
                Allure.getLifecycle().addAttachment(your-screensout-filename, "image/png", "png", screenShot);
            } catch (Exception e) {
                e.printStackTrace();
                log("Exception occured while taking the screenshot");
            }
        }
...
}
...