Det här är att ta skärmdump med Selenium Webdriver och spara i MS SQL Database. Bilden sparas i databasen med bildnamnstillägget med webbläsarens namn, webbläsarversion, sekvensnummer och scenarians namn. Den här koden stöds Chrome, Firefox, Internet Explorer och Safari.
Det finns ytterligare ett alternativ mellan rad 63-70 för att spara bilden i en lokal mapp om du vill. Du kan ställa in en mapp i det lokala systemet och det sparar bilden i mappen du angav i png-format och byteformat i MSSql-databasen.
Ta skärmdump och spara till MSSQL-databasen med Java och Selen Webriver
paketet com.main;
importera java.awt.image.BufferedImage;
importera java.io.File;
importera java.io.FileInputStream;
importera java.io.IOException;
importera java.io.InputStream;
importera java.sql.Connection;
importera java.sql.DriverManager;
importera java.sql.PreparedStatement;
importera java.sql.ResultSet;
importera java.sql.SQLException;
importera java.util.Properties;
importera java.util.concurrent.TimeUnit;
importera javax.imageio.ImageIO;
importera org.openqa.selenium.Capabilities;
importera org.openqa.selenium.JavascriptExecutor;
importera org.openqa.selenium.OutputType;
importera org.openqa.selenium.TakesScreenshot;
importera org.openqa.selenium.WebDriver;
importera org.openqa.selenium.remote.RemoteWebDriver;
offentlig klass ImageSave {
privat statisk int imageSeqNo = 0;
privat statisk String scenName;
privat statisk WebDriver browserDriver;
privat statisk int-browserWidth;
privat statisk int-browserHight;
offentlig statisk String-webbläsare;
offentlig statisk WebDriver-drivrutin;
offentliga statiska int getBrowserWidth () {
returnera browserWidth;
}
offentliga statiska int getBrowserHeight () {
returnera browserHeight;
}
offentlig statisk String getScenName () {
retur scenName;
}
offentliga statiska int getImageSeqNo () {
returnera bildSeqNo;
}
statisk statisk tomt huvud (sträng [] args) kastar undantag {
// BrowserDriver.getCurrentDriver ();
}
offentlig statisk tomt addScreenshot (WebDriver-drivrutin) kastar IOException,
ClassNotFoundException, InterruptedException {
byte [] scrByte = getScreenShotBytes (drivrutin);
webbläsare = getBrowserAndVersion ();
String scenarioName = getScenName ();
String imageName = scenarioName + "" + webbläsare + ""
+ System.currentTimeMillis () + ".png";
Fil scrFile = getScreenShotFile (drivrutin);
String screenWidthHeight = getImageWidthHeight (scrFile);
// Om du vill spara skärmbilden i det lokala systemet, aktivera raden nedan
// FileUtils.copyFile (scrFile, ny fil ("C: // screenshot //" + imageName));
insertImageDB (scrByte, scenarioName, imageName, screenWidthHeight,
webbläsare);
Thread.sleep (1000);
}
statisk statisk sträng getImageWidthHeight (File imageFile) slår IOException {
BufferedImage bimg = ImageIO.read (imageFile);
int imageWidth = bimg.getWidth ();
int imageHeight = bimg.getHeight ();
om (imageWidth! = 0) {
returnera imageWidth + "x" + imageHeight;
} annat {
returnera "FullScreenx" + imageHeight;
}
}
offentlig statisk fil getScreenShotFile (WebDriver-drivrutin) {
// WebDriver driverA = new Augmenter (). Augment (driver);
returnera ((TakesScreenshot) drivrutin) .getScreenshotAs (OutputType.FILE);
}
offentliga statiska byte [] getScreenShotBytes (WebDriver-drivrutin) {
returnera ((TakesScreenshot) drivrutin) .getScreenshotAs (OutputType.BYTES);
}
statisk statisk tomhet insertImageDB (byte [] imageByte, String scenName,
String imageName, String screenWidthHight, String-webbläsare)
kastar ClassNotFoundException {
Egenskaper dbProp = Nya Egenskaper ();
InputStream dbPropInput = null;
ResultatSet rs = null;
PreparedStatement ps = null;
Anslutning con = null;
// setImageSeqNo (getImageSeqNo () + 1);
int seqNo = getImageSeqNo ();
System.out.println (scennamn + "-" + webbläsare + "-"
+ screenWidthHeight + "- Skottnummer:" + seqNo);
Prova {
String propPath = ". \ Src \ test \ resurser \ rekvisita \ dbConnect.properties";
dbPropInput = nytt FileInputStream (propPath);
dbProp.load (dbPropInput); // ladda egenskapsfilen
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 = ny java.sql.Timestamp (date.getTime ());
System.out.println ("Image Timestamp =" + sqlTimestamp);
ps.setEscapeProcessing (true);
ps.setQueryTimeout (90); // timeout-värde kan inaktivera senare bild
ps.setString (1, "Project");
ps.setString (2 scennamn);
ps.setString (3, webbläsare);
ps.setString (4, skärmviddHight);
ps.setTimestamp (5, sqlTimestamp);
ps.setInt (6, seqNo);
ps.setString (7, bildnamn);
ps.setBytes (8, imageByte);
// kommentar under rad för att inaktivera databasuppdatering
ps.executeUpdate ();
} fånga (IOException e) {
e.printStackTrace ();
} fånga (SQLException e) {
e.printStackTrace ();
} till sist {
Prova {
om (dbPropInput! = null)
dbPropInput.close ();
om (rs! = null)
rs.close ();
om (ps! = null)
ps.close ();
om (con! = null)
con.close ();
} fånga (Undantag e) {
e.printStackTrace ();
}
}
}
offentliga statiska String getBrowserAndVersion () {
String browser_version = null;
Kapacitets cap = ((RemoteWebDriver) drivrutin) .getCapabilities ();
String browsername = cap.getBrowserName ();
// Detta block för att ta reda på IE Versionsnummer
om ("internet explorer" .equalsIgnoreCase (webbläsarnamn)) {
String uAgent = (String) ((JavascriptExecutor) drivrutin)
.executeScript ("returnera navigator.userAgent;");
System.out.println (uAgent);
// uAgent returnera som "MSIE 8.0 Windows" för IE8
om (uAgent.contains ("MSIE") && uAgent.contains ("Windows")) {
browser_version = uAgent.substring (uAgent.indexOf ("MSIE") + 5,
uAgent.indexOf ("Windows") - 2);
} annars om (uAgent.contains ("Trident / 7.0")) {
browser_version = "11.0";
} annat {
browser_version = "00";
}
} annat {
// Browser version för Firefox och Chrome
browser_version = cap.getVersion (); // .split (".") [0];
}
String browserversion = browser_version.substring (0,
browser_version.indexOf ( ””));
String bVersion = String.format ("% 02d", Integer.parseInt (browserversion));
returnera ((browsernamn) + "_" + bVersion);
}
offentlig statisk String browserNameConvert (String browser_name) {
om (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "explorer")) {
returnera "IE";
} annars om (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "firefox")) {
returnera "FF";
} annars om (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "chrome")) {
returnera "CH";
} annars om (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "safari")) {
returnera "SF";
} annat {
returnera "NA";
}
}
}
MSSQL-databasanslutning Egenskapsfil med användaruppgifter och lagringsprocedur
################## dbConnect.properties ##################
dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbURL = jdbc: SQLServer: // YOURSERVERURL; databas = database; user = NAME; password = LÖSENORD
SPSql = {call STOREPROCEDURE (?, ?, ?, ?, ?, ?, ?, ?)}
För att spara i databasen är affärsproceduren som redan skapats i det här exemplet och alla dessa data för databasanslutning och lagringsproceduren listade i egenskapsfilen.
Webbläsarens namn konverterar till 2 char korta former som FF (Firefox), CH (Chrome) etc. Det här kan också hitta webbläsareversion programmatiskt inklusive Internet Explorer versionsnummer. Det här skriptet stöder Internet Explorer-versioner 8, 9, 10, 11.