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

5 bedste browsere understøtter Flash Player til Android

5 bedste browsere understøtter Flash Player til Android

Google Play Butik understøtter ikke flash afspiller til android-enheder, og du vil ikke kunne få nogen opdateringer eller fejlrettelser, hvis du installerer flash afspilleren til Android fra tredjeparts applikationer og steder. Hvis du har en telefon med Android 4.1 Jelly Bean og derover, er der ingen måde at få support til Flash Player fra Adobe til din tablet, og også Nexus 7 tablet kommer ikke med flash forudinstalleret. Der...

Næste Artikel

IOS ScreenTime: En komplet vejledning til forældrekontrol

IOS ScreenTime: En komplet vejledning til forældrekontrol

Screen Time, den efterlængte iOS Parental Control-funktion er blevet rullet ud som en del af iOS 12 . Du har måske brugt eller hørt om begrænsningerne på iOS 11 eller andre tidligere versioner. Ud over at indføre begrænsningerne hjælper Screen Time dig med at overvåge præcis, hvor meget tid du og din familie bruger på iOS-enheder som iPhone eller iPad. Redaktøre...