Це, щоб зробити Скріншот за допомогою 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;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
імпортувати javax.imageio.ImageIO;
import 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;
public class ImageSave {
приватний статичний int imageSeqNo = 0;
приватний статичний рядок scenName;
приватний статичний браузер WebDriverDriver;
приватний статичний int browserWidth;
приватний статичний int browserHeight;
публічний статичний браузер String;
публічний статичний драйвер WebDriver;
загальнодоступна статична int getBrowserWidth () {
повернути браузерWidth;
}
public static int getBrowserHeight () {
повернення браузера висотою;
}
публічний статичний рядок getScenName () {
return scenName;
}
public static int getImageSeqNo () {
return imageSeqNo;
}
public static void main (String [] args) кидає Exception {
// BrowserDriver.getCurrentDriver ();
}
public static void addScreenshot (драйвер WebDriver) викидає IOException,
ClassNotFoundException, InterruptedException {
байт [] scrByte = getScreenShotBytes (драйвер);
browser = getBrowserAndVersion ();
String scenarioName = getScenName ();
String imageName = ім'я сценарію + "" + браузер + ""
+ System.currentTimeMillis () + ".png";
Файл scrFile = getScreenShotFile (драйвер);
Рядок screenWidthHeight = getImageWidthHeight (scrFile);
// якщо потрібно зберегти знімок знімка екрана в локальній системі, увімкніть рядок нижче
// FileUtils.copyFile (scrFile, новий файл ("C: // скріншот //" + imageName));
insertImageDB (scrByte, ім'я сценарію, ім'я зображення, screenWidthHeight,
браузер);
Thread.sleep (1000);
}
public static String getImageWidthHeight (Файл imageFile) кидає IOException {
BufferedImage bimg = ImageIO.read (imageFile);
int imageWidth = bimg.getWidth ();
int imageHeight = bimg.getHeight ();
if (imageWidth! = 0) {
повернення зображенняWidth + “x” + imageHeight;
} else {
повернути "FullScreenx" + imageHeight;
}
}
публічний статичний файл getScreenShotFile (драйвер WebDriver) {
// WebDriver driverA = new Augmenter (). Augment (driver);
return ((TakesScreenshot) драйвер) .getScreenshotAs (OutputType.FILE);
}
відкритий статичний байт [] getScreenShotBytes (драйвер WebDriver) {
return ((TakesScreenshot) драйвер) .getScreenshotAs (OutputType.BYTES);
}
public static void insertImageDB (байт [] imageByte, рядок scenName,
String imageName, String screenWidthHeight, переглядач рядків)
throws ClassNotFoundException {
Властивості dbProp = new Properties ();
InputStream dbPropInput = null;
ResultSet rs = null;
PreparedStatement ps = null;
З'єднання con = null;
// setImageSeqNo (getImageSeqNo () + 1);
int seqNo = getImageSeqNo ();
System.out.println (scenName + ”—-“ + браузер + ”—-“
+ screenWidthHeight + ”- Номер знімка:” + seqNo);
try {
Рядок propPath = “. \ T
dbPropInput = new FileInputStream (propPath);
dbProp.load (dbPropInput); // завантажуємо файл властивостей
Рядок dbDriver = (dbProp.getProperty (“dbDriver”));
Рядок dbURL = (dbProp.getProperty (“dbURL”));
Рядок stPro = (dbProp.getProperty (“SPSql”));
Class.forName (dbDriver);
con = DriverManager.getConnection (dbURL);
ps = con.prepareStatement (stPro);
java.util.Date date = new java.util.Date ();
java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp (date.getTime ());
System.out.println ("Timestamp Image Timestamp =" + sqlTimestamp);
ps.setEscapeProcessing (true);
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 ();
} нарешті {
try {
if (dbPropInput! = null)
dbPropInput.close ();
if (rs! = null)
rs.close ();
if (ps! = null)
ps.close ();
if (con! = null)
con.close ();
} catch (Виняток e) {
e.printStackTrace ();
}
}
}
публічний статичний рядок getBrowserAndVersion () {
Рядок browser_version = null;
Capabilities cap = ((RemoteWebDriver) драйвер) .getCapabilities ();
String browsername = cap.getBrowserName ();
// Цей блок, щоб дізнатися номер версії IE
if ("інтернет-провідник" .equalsIgnoreCase (ім'я користувача браузера)) {
Рядок 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);
} ще якщо (uAgent.contains (“Trident / 7.0”)) {
browser_version = “11.0”;
} else {
browser_version = “00”;
}
} else {
// Версія браузера для Firefox і Chrome
// .split (“.”) [0];
}
String browserversion = browser_version.substring (0,
browser_version.indexOf (“.”));
Рядок bVersion = String.format ("% 02d", Integer.parseInt (browserversion));
повернення (ім'я користувача) + "_" + bВерсія);
}
public static String browserNameConvert (рядок browser_name) {
if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "explorer")) {
повернути "IE";
} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, “firefox”)) {
повернути "FF";
} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, “chrome”)) {
повернення "CH";
} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "safari")) {
повернення “SF”;
} else {
повернення “NA”;
}
}
}
Файл властивості підключення до бази даних MSSQL з обліковими даними користувача та процедурою зберігання
################## dbConnect.properties ##################
dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbURL = jdbc: sqlserver: // YOURSERVERURL; database = DATABASENAME; користувач = USERNAME; пароль = ПАРОЛЬ
SPSql = {виклик STOREPROCEDURE (?, ?, ?, ?, ?, ?, ?, ?)?
Щоб зберегти в базі даних, процедура зберігання вже створена в цьому прикладі, і всі ці дані для підключення до бази даних і процедури зберігання вказані у файлі властивостей.
Ім'я браузера перетворюється на 2 символи коротких форм, як FF (Firefox), CH (Chrome) і т.д. Це також дозволяє знайти версію браузера програмно, включаючи номер версії Internet Explorer. Цей сценарій підтримує версії Internet Explorer 8, 9, 10, 11.