Så här tar du skärmdump och sparar i MSSQL-databasen med Java och Selen Webriver



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.

Tidigare Artikel

Hur delas du i Live Location på WhatsApp?

Hur delas du i Live Location på WhatsApp?

Levande platsdelning är en livräddande funktion när du är i ett problem att gå vilse på gatan. Vi har redan förklarat hur du utför live plats för iPhone med Message apps. WhatsApp är nummer 1 gratis chatt app och erbjuder funktionen live plats direkt från app chattfönstret. Låt oss nu förklara hur du delar live plats på WhatsApp för både Andoird och iPhone-användare. Skicka nuvarande...

Nästa Artikel

4 Bästa Online Email Scheduler Site för framtida och återkommande e-postmeddelanden.

4 Bästa Online Email Scheduler Site för framtida och återkommande e-postmeddelanden.

Nu kan du hålla alla dina vänners födelsedags e-postmeddelanden schemalagda i förväg för att leverera direkt på födelsedagen varje år. Trevlig fångst, eller hur? Det är trevligt och överraskande att känna när du delar en text eller e-postmeddelanden på din väns födelsedag. Det finns några verktyg på nätet som kan hjälpa dig att utnyttja denna återkommande e-post eller epostschemaläggningsfunktioner. Dessa onlineverktyg k...