Для этого нужно сделать снимок экрана с помощью Selenium Webdriver и сохранить в базе данных MS SQL. Изображение сохраняется в базе данных с добавлением имени изображения вместе с именем браузера, версией браузера, порядковым номером и именем сценария. Этот код поддерживается Chrome, Firefox, Internet Explorer и Safari.
Между строкой 63-70 есть еще одна возможность сохранить изображение в локальную папку, если вы хотите. Вы можете установить папку в локальной системе, и она сохранит изображение в папку, указанную вами в формате png и байтовом формате в базе данных MSSql.
Сделайте снимок экрана и сохраните его в базе данных MSSQL с помощью Java и Selenium Webriver
пакет com.main;
import java.awt.image.BufferedImage;
импорт java.io.File;
import java.io.FileInputStream;
импорт java.io.IOException;
import java.io.InputStream;
импорт java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
импорт java.util.Properties;
import java.util.concurrent.TimeUnit;
импорт javax.imageio.ImageIO;
импорт org.openqa.selenium.Capabilities;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
открытый класс ImageSave {
private static int imageSeqNo = 0;
приватная статическая String scenName;
приватный статический WebDriver browserDriver;
приватная статическая int browserWidth;
приватная статическая int browserHeight;
публичный статический браузер String;
публичный статический драйвер WebDriver;
public static int getBrowserWidth () {
вернуть browserWidth;
}
public static int getBrowserHeight () {
вернуть browserHeight;
}
public static String getScenName () {
возвращаемое sceneName;
}
public static int getImageSeqNo () {
return imageSeqNo;
}
public static void main (String [] args) выдает Exception {
// BrowserDriver.getCurrentDriver ();
}
public static void addScreenshot (драйвер WebDriver) выдает IOException,
ClassNotFoundException, InterruptedException {
byte [] scrByte = getScreenShotBytes (драйвер);
browser = getBrowserAndVersion ();
String sceneName = getScenName ();
Строка imageName = sceneName + ”” + browser + ””
+ System.currentTimeMillis () + «.png»;
Файл scrFile = getScreenShotFile (драйвер);
String screenWidthHeight = getImageWidthHeight (scrFile);
// если вы хотите сохранить снимок экрана в локальной системе, включите строку ниже
// FileUtils.copyFile (scrFile, новый файл («C: // screenshot //» + imageName));
insertImageDB (scrByte, sceneName, imageName, screenWidthHeight,
браузер);
Thread.sleep (1000);
}
public static String getImageWidthHeight (File imageFile) выдает IOException {
BufferedImage bimg = ImageIO.read (imageFile);
int imageWidth = bimg.getWidth ();
int imageHeight = bimg.getHeight ();
if (imageWidth! = 0) {
вернуть imageWidth + «x» + imageHeight;
} еще {
вернуть «FullScreenx» + imageHeight;
}
}
открытый статический файл getScreenShotFile (драйвер WebDriver) {
// WebDriver driverA = new Augmenter (). Augment (driver);
драйвер return ((TakesScreenshot)) .getScreenshotAs (OutputType.FILE);
}
открытый статический байт [] getScreenShotBytes (драйвер WebDriver) {
Возврат ((TakesScreenshot) драйвер) .getScreenshotAs (OutputType.BYTES);
}
public static void insertImageDB (byte [] imageByte, String scenName,
String imageName, String screenWidthHeight, String browser)
выдает ClassNotFoundException {
Свойства dbProp = новые свойства ();
InputStream dbPropInput = null;
ResultSet rs = null;
PreparedStatement ps = null;
Соединение con = null;
// setImageSeqNo (getImageSeqNo () + 1);
int seqNo = getImageSeqNo ();
System.out.println (scenName + ”—-” + browser + ”—-”
+ screenWidthHeight + ”—- Номер снимка:” + seqNo);
пытаться {
String propPath = «. \ Src \ test \ resources \ props \ dbConnect.properties»;
dbPropInput = new FileInputStream (propPath);
dbProp.load (dbPropInput); // загрузить файл свойств
String dbDriver = (dbProp.getProperty («dbDriver»));
String dbURL = (dbProp.getProperty («dbURL»));
String stPro = (dbProp.getProperty («SPSql»));
Class.forName (dbDriver);
con = DriverManager.getConnection (dbURL);
ps = con.prepareStatement (stPro);
java.util.Date date = новый java.util.Date ();
java.sql.Timestamp sqlTimestamp = новый java.sql.Timestamp (date.getTime ());
System.out.println («Image Timestamp =» + sqlTimestamp);
ps.setEscapeProcessing (истина);
ps.setQueryTimeout (90); // значение таймаута может быть отключено позже, картинка
ps.setString (1, «Проект»);
ps.setString (2, scenName);
ps.setString (3, браузер);
ps.setString (4, screenWidthHeight);
ps.setTimestamp (5, sqlTimestamp);
ps.setInt (6, seqNo);
ps.setString (7, imageName);
ps.setBytes (8, imageByte);
// комментарий ниже строки, чтобы отключить обновление базы данных
ps.executeUpdate ();
} catch (IOException e) {
e.printStackTrace ();
} catch (SQLException e) {
e.printStackTrace ();
} в конце концов {
пытаться {
if (dbPropInput! = null)
dbPropInput.close ();
если (rs! = ноль)
rs.Close ();
если (пс! = ноль)
ps.close ();
if (con! = null)
con.close ();
} catch (исключение e) {
e.printStackTrace ();
}
}
}
public static String getBrowserAndVersion () {
Строка browser_version = null;
Capabilities cap = ((RemoteWebDriver) драйвер) .getCapabilities ();
Строка browsername = cap.getBrowserName ();
// Этот блок для определения номера версии IE
if («Internet Explorer» .equalsIgnoreCase (имя браузера)) {
String uAgent = (String) ((JavascriptExecutor) драйвер)
.executeScript («return navigator.userAgent;»);
System.out.println (uAgent);
// uAgent возвращает как «MSIE 8.0 Windows» для IE8
if (uAgent.contains («MSIE») && uAgent.contains («Windows»)) {
browser_version = uAgent.substring (uAgent.indexOf («MSIE») + 5,
uAgent.indexOf («Windows») - 2);
} else if (uAgent.contains («Trident / 7.0»)) {
browser_version = «11.0»;
} еще {
browser_version = «00»;
}
} еще {
// Версия браузера для Firefox и Chrome
browser_version = cap.getVersion (); // .split («.») [0];
}
Строка browserversion = browser_version.substring (0,
browser_version.indexOf ( «»));
String bVersion = String.format («% 02d», Integer.parseInt (версия браузера));
return ((имя браузера) + «_» + bVersion);
}
public static String browserNameConvert (String browser_name) {
if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, «explorer»)) {
вернуть «IE»;
} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
имя_браузера, «firefox»)) {
вернуть «FF»;
} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
имя_браузера, «хром»)) {
вернуть «CH»;
} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
имя_браузера, «сафари»)) {
вернуть «SF»;
} еще {
вернуть «нет»;
}
}
}
Файл свойств подключения к базе данных MSSQL с учетными данными пользователя и процедурой хранения
################## ################## dbConnect.properties
dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver
DbUrl = JDBC: SQLServer: // YOURSERVERURL; база данных = DATABASENAME, пользователь = USERNAME, пароль = PASSWORD
SPSql = {вызов STOREPROCEDURE (?, ?, ?, ?, ?, ?, ?, ?)}
Для сохранения в базе данных процедура хранения, уже созданная в этом примере, и все эти данные для подключения к базе данных и процедуры сохранения перечислены в файле свойств.
Имя браузера преобразуется в 2 короткие формы символов, такие как FF (Firefox), CH (Chrome) и т. Д. Это также позволяет программно находить версию браузера, включая номер версии Internet Explorer. Этот скрипт поддерживает версии Internet Explorer 8, 9, 10, 11.