Как сделать снимок экрана и сохранить его в базе данных 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;

импорт 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.

Предыдущая статья

8 лучших солнечных зарядных устройств для мобильных телефонов и планшетов для зарядки

8 лучших солнечных зарядных устройств для мобильных телефонов и планшетов для зарядки

Солнечные зарядные устройства для сотовых телефонов являются идеальной альтернативой обычным телефонным зарядным устройствам в чрезвычайных ситуациях без питания. На рынке есть два различных типа солнечных зарядных устройств. Солнечное зарядное устройство и солнечные батареи для сотовых телефонов. Тем не...

Следующая статья

Как отразить или привести телефон к Firestick?  (iPhone и Android)

Как отразить или привести телефон к Firestick? (iPhone и Android)

Изображение предоставлено: Amazon Иногда возникает необходимость отразить свой телефон на большом экране, например на телевизоре. Допустим, вы хотели бы смотреть фотографии, видео или презентации, хранящиеся на вашем телефоне, на большом экране телевизора. Невозможно подключить ваш Android или iPhone напрямую к Amazon Fire TV. Однако вы используете сторонние приложения для зеркалирования телефона на телевизор с помощью Firestick. Поскольку Amazon Firestick основ...