понедельник, 5 мая 2014 г.

Selenium: снятие скриншота элемента

В некоторых ситуациях при написании тестов с использованием селениума появляется желание прикрепить к отчету снимок не целого экрана, а только лишь отдельного элемента.  Разумеется, вариантов, как это сделать - огромное множество. Я , как обычно, решил сделать еще один, свой. Использую его достаточно часто при написании тестов. 
Собственно немного об моем подходе можно прочитать далее.

Алгоритм работы
Сам принцип работы до нельзя прост - берется скриншот всего экрана, далее с помощью стандартных библиотек java по определенным координатам вырезается необходимое изображение. Что с ним делать далее - каждый волен решать сам. В моем случае - я записываю его в файл.

1-ый шаг - снимаем скриншот и преобразовываем его в BufferedImage.
Здесь все достаточно просто :

...
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
....

File screenShot = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
BufferedImage screenshotImage = ImageIO.read(screenShot);

....