Hvordan ta skjermbilde og lagre i MSSQL-databasen ved hjelp av Java og Selenium Webriver



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.

Forrige Artikkel

Slik fjerner du oppgavelinjen?

Slik fjerner du oppgavelinjen?

Windows operativsystem, klokken på klokken i oppgavelinjen er en god funksjon. Dessverre finner mange mennesker oppgavelinjen klokken praktisk, andre kan finne det irriterende. Hvis du fjerner det fra oppgavelinjen i Windows XP, har det mer plass til å vise listen over kjørende programvare. Å kvitte seg med klokken: 1. Hø...

Neste Artikkel

Beste iPad-tilbehør for å beskytte enheten

Beste iPad-tilbehør for å beskytte enheten

IPads strekker seg nå til sine kunder mer enn noensinne. Du kan konvertere iPad til en bærbar eller en tegnepute med ekstra gadgets og Apple-godkjent tilbehør. Fra vanlige fine kvalitet skinnvesker til moderne bærbare tastatur, er vår liste garantert for å hjelpe deg med å velge det beste. IPad-blyanten kan konvertere iPad til en profesjonell tegneblokk med høyre tegneapplikasjoner. Vi har...