Что дебаг показывает у следующих объектов?
Screenshot scr
BufferedImage originalImage
ByteArrayOutputStream baos
Что дебаг показывает у следующих объектов?
Screenshot scr
BufferedImage originalImage
ByteArrayOutputStream baos
Сохраните изображение локально на диск и посмотрите, что там вообще. Может чего с ним не то?
ну это нормально. Это ж bytes
Скриншот в тесте дергаю так
HotelResultsPage hotelResultsPage = taHomePAge.startSearch();
saveScreenshot("Result search");
Таак. А после чего такая ошибка начала проявляеться?
static byte[] getByteArrayFromImage(BufferedImage image, String format) {
//saveFileToLog(image, testName, screenshotType);
LOG.debug("Converting screenshot to byte array for report attachment");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
ImageIO.write(image, format, baos);
LOG.info("Successfully wrote screenshot to byte array output stream");
} catch (IOException e) {
LOG.error("Cannot write screenshot to ByteArrayOutputStream");
}
byte[] imageBytes = baos.toByteArray();
if (imageBytes.length == 0) {
String errorMessage = "Converted byte array for screenshot is empty.";
LOG.error(errorMessage);
throw new RuntimeException(errorMessage);
}
LOG.info("Converted image screenshot to byte array. Byte array size is: "
+ imageBytes.length);
return imageBytes;
}
Я юзаю етот метод что б дернуть байт масив с имеджа. Все скриншота прикреплени и все работает.
ну и сам метод (просто вибросить нужно ненужние Вам строки)
@Attachment(value = "Browser screenshot after test failed", type = "image/png")
private byte[] createWebBrowserScreenShot(ITestResult result) {
String currentTestName = TestListenerUtil.getTestName(result);
BufferedImage image = null;
LOG.debug("Writing out web browser screenshot on {} test failure",
currentTestName);
WebDriver driver = WebDriverFactory.getCreatedWebDriver();
try {
// we add this, because sometimes webdriver takes screenshots little
// bit earlier then needed
Thread.sleep(1500);
} catch (InterruptedException e1) {
LOG.error(e1.getMessage());
}
File imageFile = ((TakesScreenshot) driver)
.getScreenshotAs(OutputType.FILE);
try {
image = ImageIO.read(imageFile);
} catch (IOException e) {
LOG.error(
"Cannot read browser screenshot created file and convert it to Buffered Image object for test: "
+ currentTestName, e);
}
saveScreenshotFileToLog(image, currentTestName,
ScreenShot.BrowserScreen.name(), WebBrowser.getSetWebBrowser());
return TestListenerUtil.getByteArrayFromImage(image,
SCREENSHOT_FILE_FORMAT);
}
Warning или ошибка?
ошибка
То есть вы как то еще и Listener используете?
В момент формирования отчета surfire или Allure. То есть тесты отрабатывают хорошо, а вот при формировании отчета начинаются ошибки.
ну да , ето просто утилитний статический метод, которий в листенере используеться
А как вы листенер запускаете? Как то через maven?
Я имел в виду - после каких действий стала появляться ошибка? Раньше ведь ее не было
http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html
раздел Using Custom Listeners and Reporters
Собственно говоря после добавления метода снятия скриншота и его вызова в тесте
Так. А попробуйте снять скриншот без ашота. Стандартными методами селениума
А метод преобразования можно будет оставить прежний?
@Attachment(type = "image/png")
public byte[] makeScreenshot() {
return ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
}
Попробую вот так.