Як зробити знімок екрана і зберегти в базі даних MSSQL за допомогою Java і Selenium Webriver



Це, щоб зробити Скріншот за допомогою 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.

Попередня Стаття

Розклад нічного освітлення в Windows 10 для захисту очей

Розклад нічного освітлення в Windows 10 для захисту очей

Виробники ПК та смартфонів почали використовувати функцію нічного режиму на екрані комп'ютера та телефону. Випромінювання синього світла в цифрових дисплеях викликає переривання циклу сну, що вплине на користувачів ноутбуків і мобільних телефонів. Виробники ПК включають засоби захисту, дозволяючи деяким програмам або програмам контролювати випромінювання синього світла в дисплеях. Microsoft - це найновіший, що пропонує новітній режим для ПК на останніх о...

Наступна Стаття

15 Кращі ігри Nintendo 3DS весь час

15 Кращі ігри Nintendo 3DS весь час

Facebook Twitter Pinterest WhatsApp Телеграма Nintendo 3DS є однією з кращих успішних ігрових консолей, які є портативними і містять величезний вибір ігор для ігор. Показуючи кращі стереоскопічні 3D-ефекти, поточна версія Nintendo 3DS успадковує вдосконалені елементи керування та графіку, що дає вам кращі ігри 3DS. Є багато ігор Nintendo 3DS на вибір, незалежно від жанру, і бібліотека збільшує свій розмір з кожним днем. Тим не менш, серед тисяч ігор для портативних консолей, щоб дізнатися, кращі ігри для 3DS для вас і...