Dette er at tage Screenshot ved hjælp af Selen Webdriver og at gemme i MS SQL Database. Billedet gemmes i databasen med billednavnet vedhæftes med browsernavn, browserversion, sekvensnummer og scenarienavn. Denne kode understøttes Chrome, Firefox, Internet Explorer og Safari.
Der er endnu en mulighed mellem linje 63-70 for at gemme billedet i en lokal mappe, hvis du vil. Du kan indstille en mappe i det lokale system, og det vil gemme billedet i den mappe du specificerede i png format og byte format i MSSql Database.
Tag skærmbillede og gem til MSSQL Database ved hjælp af Java og Selen Webriver
pakke com.main;
importer java.awt.image.BufferedImage;
importer java.io.File;
importer java.io.FileInputStream;
importer java.io.IOException;
importer java.io.InputStream;
importer java.sql.Connection;
importer java.sql.DriverManager;
importer java.sql.PreparedStatement;
importer java.sql.ResultSet;
importer java.sql.SQLException;
importer java.util.Properties;
importer java.util.concurrent.TimeUnit;
importer javax.imageio.ImageIO;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.JavascriptExecutor;
importere org.openqa.selenium.OutputType;
importere org.openqa.selenium.TakesScreenshot;
importer org.openqa.selenium.WebDriver;
importere org.openqa.selenium.remote.RemoteWebDriver;
offentlig klasse ImageSave {
privat statisk int imageSeqNo = 0;
privat statisk String scenName;
privat statisk WebDriver browserDriver;
privat statisk int browserWidth;
privat statisk int browserHeight;
offentlig statisk String-browser;
offentlig statisk WebDriver driver;
offentlig statisk int getBrowserWidth () {
returner browserWidth;
}
offentlige statiske int getBrowserHeight () {
returner browserHeight;
}
offentlig statisk String getScenName () {
retur scenName;
}
offentlige statiske int getImageSeqNo () {
returnere imageSeqNo;
}
offentlig statisk tomrum hoved (String [] args) kaster Undtagelse {
// BrowserDriver.getCurrentDriver ();
}
offentlig statisk tomrum addScreenshot (WebDriver driver) kaster IOException,
ClassNotFoundException, InterruptedException {
byte [] scrByte = getScreenShotBytes (driver);
browser = getBrowserAndVersion ();
String scenarioName = getScenName ();
String imageName = scenarioName + "" + browser + ""
+ System.currentTimeMillis () + ".png";
Fil scrFile = getScreenShotFile (driver);
String screenWidthHeight = getImageWidthHeight (scrFile);
// hvis du vil gemme skærmbilledet i lokalt system, skal du aktivere linje nedenfor
// FileUtils.copyFile (scrFile, ny fil ("C: // screenshot //" + imageName));
insertImageDB (scrByte, scenarienavn, imageName, screenWidthHeight,
browser);
Thread.sleep (1000);
}
offentlig statisk streng GetImageWidthHeight (File imageFile) kaster IOException {
BufferedImage bimg = ImageIO.read (imageFile);
int imageWidth = bimg.getWidth ();
int imageHeight = bimg.getHeight ();
hvis (imageWidth! = 0) {
returnere imageWidth + "x" + imageHeight;
} ellers {
returnere "FullScreenx" + imageHeight;
}
}
offentlig statisk fil getScreenShotFile (WebDriver driver) {
// WebDriver driverA = new Augmenter (). Augment (driver);
returnere ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE);
}
offentlig statisk byte [] getScreenShotBytes (WebDriver driver) {
returnere ((TakesScreenshot) driver) .getScreenshotAs (OutputType.BYTES);
}
offentlig statisk tomrum insertImageDB (byte [] imageByte, String scenName,
String imageName, String screenWidthHeight, String browser)
kaster ClassNotFoundException {
Egenskaber dbProp = nye egenskaber ();
InputStream dbPropInput = null;
ResultSet rs = null;
PreparedStatement ps = null;
Forbindelse con = null;
// setImageSeqNo (getImageSeqNo () + 1);
int seqNo = getImageSeqNo ();
System.out.println (scenName + "-" + browser + "-"
+ screenWidthHeight + "- Shot Number:" + seqNo);
prøve {
String propPath = ". \ Src \ test \ ressourcer \ rekvisitter \ dbConnect.properties";
dbPropInput = nyt FileInputStream (propPath);
dbProp.load (dbPropInput); // load property file
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 = ny java.util.Date ();
java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp (date.getTime ());
System.out.println ("Image Timestamp =" + sqlTimestamp);
ps.setEscapeProcessing (sand);
ps.setQueryTimeout (90); // timeout værdi kan deaktivere senere billede
ps.setString (1, "Project");
ps.setString (2, scenName);
ps.setString (3, browser);
ps.setString (4, screenWidthHeight);
ps.setTimestamp (5, sqlTimestamp);
ps.set (6, seqNo);
ps.setString (7, billednavn);
ps.setBytes (8, imageByte);
// kommentar under linie for at deaktivere database opdatering
ps.executeUpdate ();
} fangst (IOException e) {
e.printStackTrace ();
} fangst (SQLException e) {
e.printStackTrace ();
} langt om længe {
prøve {
hvis (dbPropInput! = null)
dbPropInput.close ();
hvis (rs! = null)
rs.close ();
hvis (ps! = null)
ps.close ();
hvis (con! = null)
con.close ();
} fangst (undtagelse e) {
e.printStackTrace ();
}
}
}
offentlig statisk String getBrowserAndVersion () {
String browser_version = null;
Kapacitets cap = ((RemoteWebDriver) driver) .getCapabilities ();
String browsername = cap.getBrowserName ();
// Denne blok for at finde ud af IE Versionsnummer
hvis ("internet explorer" .equalsIgnoreCase (browsername)) {
String uAgent = (String) ((JavascriptExecutor) driver)
.executeScript ("returner navigator.userAgent;");
System.out.println (uAgent);
// uAgent returnerer som "MSIE 8.0 Windows" til IE8
hvis (uAgent.contains ("MSIE") && uAgent.contains ("Windows")) {
browser_version = uAgent.substring (uAgent.indexOf ("MSIE") + 5,
uAgent.indexOf ("Windows") - 2);
} ellers hvis (uAgent.contains ("Trident / 7.0")) {
browser_version = "11.0";
} ellers {
browser_version = "00";
}
} ellers {
// Browser version til Firefox og Chrome
browser_version = cap.getVersion (); // .split (".") [0];
}
String browserversion = browser_version.substring (0,
browser_version.indexOf ( ””));
String bVersion = String.format ("% 02d", Integer.parseInt (browserversion));
returnere ((browsername) + "_" + bVersion);
}
offentlig statisk String browserNameConvert (String browser_name) {
hvis (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "explorer")) {
returnere "IE";
} ellers hvis (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "firefox")) {
returnere "FF";
} ellers hvis (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "chrome")) {
returner "CH";
} ellers hvis (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "safari")) {
returnere "SF";
} ellers {
returnere "NA";
}
}
}
MSSQL Database Connection Ejendomsfil med brugeroplysninger og butiksprocedure
################## dbConnect.properties ##################
dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbURL = JDBC: SQLServer: // YOURSERVERURL; database = DatabaseName; user = USERNAME, password = PASSWORD
SPSql = {call STOREPROCEDURE (?, ?, ?, ?, ?, ?, ?, ?)}
For at gemme i databasen er butiksproceduren, der allerede er oprettet i dette eksempel, og alle disse data til databaseforbindelse og -procedure, angivet i ejendomsfilen.
Browsernavnet konverterer til 2 char korte formularer som FF (Firefox), CH (Chrome) osv. Dette er også i stand til at finde browserversionen programmatisk inklusive Internet Explorer versionsnummer. Dette script understøtter Internet Explorer-versioner 8, 9, 10, 11.