Това е да се вземе Screenshot използване Selenium Webdriver и да се запишете в MS SQL база данни. Изображението се записва в базата данни с името на изображението, което се добавя с името на браузъра, версията на браузъра, поредния номер и името на сценария. Този код се поддържа от Chrome, Firefox, Internet Explorer и Safari.
Има още една опция между линия 63-70, за да запазите картината в локална папка, ако желаете. Можете да зададете папка в локалната система и тя ще запази картината в папката, която сте задали във формат png и формат на байт в MSSql база данни.
Направете скрийншот и запишете в базата данни MSSQL, като използвате Java и Selenium Webriver
пакет com.main;
import java.awt.image.BufferedImage;
import 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;
обществен клас ImageSave {
private static int imageSeqNo = 0;
частен статичен String scenName;
частен статичен браузър на WebDriver;
частен статичен int browserWidth;
частен статичен int browserHeight;
публичен статичен String браузър;
публичен статичен драйвер на WebDriver;
публично статично int getBrowserWidth () {
връщане на браузъра;
}
публично статично int getBrowserHeight () {
връщане на браузъра;
}
публично статично String getScenName () {
връщане scenName;
}
публично статично int getImageSeqNo () {
return imageSeqNo;
}
public static void main (String [] args) хвърля изключение {
// BrowserDriver.getCurrentDriver ();
}
public static void addScreenshot (драйверът на WebDriver) хвърля IOException,
ClassNotFoundException, InterruptedException {
byte [] scrByte = getScreenShotBytes (драйвер);
browser = getBrowserAndVersion ();
String scenarioName = getScenName ();
String imageName = scenarioName + ”” + браузър + “”
+ System.currentTimeMillis () + “.png”;
Файл scrFile = getScreenShotFile (драйвер);
String screenWidthHeight = getImageWidthHeight (scrFile);
// ако искате да запишете снимката на екрана в локалната система, активирайте линията по-долу
// FileUtils.copyFile (scrFile, нов файл (“C: // screenshot //” + imageName));
insertImageDB (scrByte, име на сценарий, име на изображение, screenWidthHeight,
браузър);
Thread.sleep (1000);
}
публичен статичен String getImageWidthHeight (File imageFile) хвърля IOException {
BufferedImage bimg = ImageIO.read (imageFile);
int imageWidth = bimg.getWidth ();
int imageHeight = bimg.getHeight ();
if (imageWidth! = 0) {
връщане imageWidth + “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);
}
публична статична невалидна insertImageDB (байт [] imageByte, String scenName,
String imageName, String screenWidthHeight, String браузър)
хвърля 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);
опитвам {
String propPath = “. \ T
dbPropInput = нов FileInputStream (propPath);
dbProp.load (dbPropInput); // зареждане на файл със свойства
String 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 (“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! = null)
rs.close ();
ако (ps! = null)
ps.close ();
ако (con! = null)
con.close ();
} catch (Exception e) {
e.printStackTrace ();
}
}
}
публично статично String getBrowserAndVersion () {
String browser_version = null;
Capabilities cap = ((RemoteWebDriver) драйвер) .getCapabilities ();
String 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
ако (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 ( "."));
String bVersion = String.format ("% 02d", Integer.parseInt (browserversion));
връщане ((име на браузъра) + „_“ + bVersion);
}
публично статично String browserNameConvert (String 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; база данни = DATABASENAME; потребителското = USERNAME; парола = ПАРОЛА
SPSql = {наречете STOREPROCEDURE (?, ?, ?, ?, ?, ?, ?, ?)?
За да запишете в базата данни, процедурата за съхранение вече е създадена в този пример и всички тези данни за свързване на база данни и процедура за съхранение са изброени в файла със свойства.
Името на браузъра се превръща в 2 char кратки форми като FF (Firefox), CH (Chrome) и т.н. Това също е в състояние да намери версия на браузъра програмно, включително номера на Internet Explorer. Този скрипт поддържа версии на Internet Explorer 8, 9, 10, 11.