Dette er å ta skjermbilde ved hjelp av Selenium Webdriver og å lagre i MS SQL Database. Bildet lagres i database med bildetavnet vedlegg med nettlesernavn, nettleserversjon, sekvensnummer og scenarienavn. Denne koden støttes Chrome, Firefox, Internet Explorer og Safari.
Det er en ekstra mulighet mellom linje 63-70 for å lagre bildet i en lokal mappe hvis du vil. Du kan angi en mappe i det lokale systemet, og det vil lagre bildet i mappen du angav i png format og byte format i MSSql Database.
Ta skjermbilde og lagre til MSSQL Database ved hjelp av 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;
importere org.openqa.selenium.Capabilities;
import org.openqa.selenium.JavascriptExecutor;
importer org.openqa.selenium.OutputType;
importere org.openqa.selenium.TakesScreenshot;
importer org.openqa.selenium.WebDriver;
importer org.openqa.selenium.remote.RemoteWebDriver;
offentlig klasse ImageSave {
privat statisk int imageSeqNo = 0;
privat statisk String scenName;
privat statisk WebDriver browserDriver;
privat statisk int nettleser;
privat statisk int nettleserHøyde;
offentlig statisk String-nettleser;
offentlig statisk WebDriver driver;
offentlig statisk int getBrowserWidth () {
returner browserWidth;
}
offentlig statisk int getBrowserHeight () {
returner browserHeight;
}
offentlig statisk String getScenName () {
retur scenName;
}
offentlig statisk int getImageSeqNo () {
returnere imageSeqNo;
}
offentlig statisk tomrom main (String [] args) kaster Unntak {
// BrowserDriver.getCurrentDriver ();
}
offentlig statisk tomt addScreenshot (WebDriver driver) kaster IOException,
ClassNotFoundException, InterruptedException {
byte [] scrByte = getScreenShotBytes (driver);
nettleser = getBrowserAndVersion ();
String scenarioName = getScenName ();
String imageName = scenarioName + "" + nettleser + ""
+ System.currentTimeMillis () + ".png";
Fil scrFile = getScreenShotFile (driver);
String screenWidthHeight = getImageWidthHeight (scrFile);
// Hvis du vil lagre skjermbilde i lokalt system, aktiver du linje nedenfor
// FileUtils.copyFile (scrFile, ny fil ("C: // screenshot //" + imageName));
insertImageDB (scrByte, scenarioName, imageName, screenWidthHeight,
nettleser);
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;
} annet {
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);
}
statisk statisk tomt insertImageDB (byte [] imageByte, String scenName,
String imageName, String screenWidthHight, String-nettleser)
kaster ClassNotFoundException {
Egenskaper dbProp = nye egenskaper ();
InputStream dbPropInput = null;
ResultSet rs = null;
PreparedStatement ps = null;
Tilkobling con = null;
// setImageSeqNo (getImageSeqNo () + 1);
int seqNo = getImageSeqNo ();
System.out.println (scenenavn + "-" + nettleser + "-"
+ skjermbreddehøyde + "- skuddnummer:" + seqNo);
prøv {
String propPath = ". \ Src \ test \ ressurser \ props \ dbConnect.properties";
dbPropInput = ny FileInputStream (propPath);
dbProp.load (dbPropInput); // laste eiendomsfilen
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 = new java.util.Date ();
java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp (date.getTime ());
System.out.println ("Image Timestamp =" + sqlTimestamp);
ps.setEscapeProcessing (true);
ps.setQueryTimeout (90); // timeout verdi kan deaktivere senere bilde
ps.setString (1, "Project");
ps.setString (2 sceneName);
ps.setString (3, nettleser);
ps.setString (4, skjermbreddehøyde);
ps.setTimestamp (5, sqlTimestamp);
ps.set (6, seqNo);
ps.setString (7, bildenavn);
ps.setBytes (8, imageByte);
// kommentar under linje for å deaktivere databaseoppdatering
ps.executeUpdate ();
} fangst (IOException e) {
e.printStackTrace ();
} fangst (SQLException e) {
e.printStackTrace ();
} endelig {
prøv {
hvis (dbPropInput! = null)
dbPropInput.close ();
hvis (rs! = null)
rs.close ();
hvis (ps! = null)
ps.close ();
hvis (con! = null)
con.close ();
} fangst (unntak e) {
e.printStackTrace ();
}
}
}
offentlig statisk String getBrowserAndVersion () {
String browser_version = null;
Caps Caps = ((RemoteWebDriver)) .getCapabilities ();
String browsername = cap.getBrowserName ();
// Denne blokken for å finne ut IE Versjonsnummer
hvis ("internet explorer" .equalsIgnoreCase (nettlesernavn)) {
String uAgent = (String) ((JavascriptExecutor) driver)
.executeScript ("return navigator.userAgent;");
System.out.println (uAgent);
// uAgent returnerer som "MSIE 8.0 Windows" for IE8
hvis (uAgent.contains ("MSIE") && uAgent.contains ("Windows")) {
browser_version = uAgent.substring (uAgent.indexOf ("MSIE") + 5,
uAgent.indexOf ("Windows") - 2);
} annet hvis (uAgent.contains ("Trident / 7.0")) {
browser_version = "11.0";
} annet {
browser_version = "00";
}
} annet {
// Nettleserversjon for 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";
} annet hvis (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "firefox")) {
returnere "FF";
} annet hvis (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "chrome")) {
returner "CH";
} annet hvis (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "safari")) {
returnere "SF";
} annet {
returnere "NA";
}
}
}
MSSQL Database Connection Eiendomsfil med brukeridentifikasjoner og Lagre Prosedyre
################## dbConnect.properties ##################
dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbURL = jdbc: SQLServer: // YOURSERVERURL; database = databasenavn, user = BRUKERNAVN, password = PASSORD
SPSql = {call STOREPROCEDURE (?, ?, ?, ?, ?, ?, ?, ?)}
For å lagre i databasen er butikkprosedyren allerede opprettet i dette eksemplet, og alle disse dataene for databasetilkobling og lagringsprosedyre oppført i eiendomsfilen.
Navnet på nettleseren konverterer til 2 korte formularer som FF (Firefox), CH (Chrome) etc. Dette er også i stand til å finne nettleserversjonen programmatisk, inkludert Internet Explorer-versjonsnummer. Dette skriptet støtter Internet Explorer-versjoner 8, 9, 10, 11.