Sådan tager du skærmbillede og gemmer til MSSQL Database ved hjælp af Java og Selen Webriver



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.

Forrige Artikel

4 Bedste VoIP Phone Service til at skære ned land telefonregning til $ 10 eller mindre

4 Bedste VoIP Phone Service til at skære ned land telefonregning til $ 10 eller mindre

VoIP Phone Service tiltrækker forbruger- og forretningsmarkedet med fantastiske funktioner og lave vedligeholdelsesomkostninger. Ved hjælp af et VoIP-telefonsystem kan du nedskære din månedlige regning næsten 30% af din faste faste månedsregning. VoIP-telefoner (Voice over Internet Protocol) -enheder er lavet til at fungere sammen med dine faste telefoner. For ...

Næste Artikel

Bedste NAS-enheder til hjemme netværk for at få adgang til eksternt.

Sky

Bedste NAS-enheder til hjemme netværk for at få adgang til eksternt.

Network Attached Storage er også kendt som NAS, er en netværksløsning til centraliseret filhåndtering. Lad os antage, at du er træt af at betale for din skyopbevaringstjeneste, eller du har brug for masser af lagerplads til at begynde med. Dette er præcis, hvor NAS-enheder sparker ind. Overvej Network Attached Storage (NAS), der er en lagerenhed, der er forbundet til dit hjem eller kontor netværk, hvilket giver tilstrækkelig plads til autoriserede netværksklienter til at gemme og hente alle slags data trådløst fra en centraliseret placering. Hvad er N...