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

Hvordan synkroniserer du Google sekundære kalendere på iPhone / iPod?

Hvordan synkroniserer du Google sekundære kalendere på iPhone / iPod?

Facebook Twitter pinterest WhatsApp Telegram Googles sekundære kalendere er vigtige, hvis du bruger til at planlægge din skole, forretningsbegivenheder som en separat post. Sekundære kalendere er bedre valg, snarere dukker op med din primære kalender for alle begivenheder i dit liv. Du kan dele sekundær kalender med din kollega eller din kontorassistent, og du kan give dem adgang til at redigere eller tilføje nye begivenheder. Hvis...

Næste Artikel

Sådan deler du Live Location på WhatsApp?

Sådan deler du Live Location på WhatsApp?

Live placering deling er en livreddende funktion, når du er i en problemer med at tabe på gaden. Vi har allerede forklaret, hvordan du udfører live placering af iPhone med Message apps. WhatsApp er nummer 1 gratis chat app og tilbyder funktionen live location lige fra app chat vinduet. Lad os nu forklare, hvordan du deler live-placering på WhatsApp for både Andoird og iPhone-brugere. Sen...