Добрый день.
Цель - сделать полноразмерный скриншот страниц писем в Gmail.
*Пример страницы письма:
*
Ожидаемый результат:
Код для снятия скриншота (всей страницы):
public void shoot() throws IOException
{
File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenshot, new File("screen.png"));
}
Фактически полученный скриншот:
Данный метод делает скрин видимой на момент работы теста области браузера, хотя на других сайтах, все работает ок.
Пробовал метод для снятия скриншота указанного веб-элемента по его координатам.
Код для снятия скриншота веб-элемента (по координатам):
public void shoot(WebElement element) throws IOException
{
driver = new Augmenter().augment(driver);
File screen = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
Point p = element.getLocation();
int width = element.getSize().getWidth();
int height = element.getSize().getHeight();
Rectangle rect = new Rectangle(width, height);
BufferedImage img = ImageIO.read(screen);
BufferedImage dest = img.getSubimage(p.getX(), p.getY(), rect.width, rect.height);
ImageIO.write(dest, "png", screen);
FileUtils.copyFile("screen.png"));
}
Данный метод не может снять скриншот области письма, потому что оно как бы выходит хитрым образом за предел зоны видимости - RasterFormatException: (y + height) is outside of Raster.
На форумах в мире говорят что проблема связана с особенностями верстки страницы, в частности со свойствами overflow и position - на Gmail при скроле страницы, скролится лишь тело письма.
Самостоятельно решить проблему не удалось. Прошу консультаций.
P.S. Вариант с уменьшением масштаба страницы не подходит - важно состояние верстки при масштабе страницы по умолчанию.