Hoe Screenshot en Save to MSSQL Database te maken met behulp van Java en Selenium Webriver



Dit is om een ​​screenshot te maken met Selenium Webdriver en op te slaan in MS SQL Database. De afbeelding wordt opgeslagen in de database met de afbeeldingsnaam toegevoegd met de browsernaam, browserversie, volgnummer en scenariodenaam. Deze code wordt ondersteund door Chrome, Firefox, Internet Explorer en Safari.

Er is nog een optie tussen regel 63-70 om de afbeelding op te slaan in een lokale map als u dat wilt. U kunt een map instellen in het lokale systeem en het zal de afbeelding opslaan in de map die u hebt opgegeven in png-indeling en byte-indeling in MSSQL Database.

Neem Screenshot en sla op naar MSSQL Database met behulp van Java en Selenium Webriver

pakket com.main;

importeer java.awt.image.BufferedImage;

importeer java.io.File;

importeer java.io.FileInputStream;

importeer java.io.IOException;

import java.io.InputStream;

importeer java.sql.Connection;

importeer java.sql.DriverManager;

importeer java.sql.PreparedStatement;

importeer java.sql.ResultSet;

importeer java.sql.SQLException;

import java.util.Properties;

importeer java.util.concurrent.TimeUnit;

importeer javax.imageio.ImageIO;

import org.openqa.selenium.Capabilities;

import org.openqa.selenium.JavascriptExecutor;

import org.openqa.selenium.OutputType;

import org.openqa.selenium.TakesScreenshot;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.remote.RemoteWebDriver;

public class ImageSave {

private static int imageSeqNo = 0;

private static String scenName;

privé statische WebDriver-browserDriver;

private static int browserWidth;

privé statisch int browserHeight;

openbare statische String-browser;

openbaar statisch WebDriver-stuurprogramma;

public static int getBrowserWidth () {

terug browserWidth;

}

public static int getBrowserHeight () {

return browserHeight;

}

public static String getscenName () {

return scenName;

}

public static int getImageSeqNo () {

return imageSeqNo;

}

public static void main (String [] args) gooit Exception {

// BrowserDriver.getCurrentDriver ();

}

public static void addScreenshot (WebDriver-stuurprogramma) gooit IOException,

ClassNotFoundException, InterruptedException {

byte [] scrByte = getScreenShotBytes (stuurprogramma);

browser = getBrowserAndVersion ();

String scenariolaam = getScenName ();

String imageName = scenarioNaam + "" + browser + ""

+ System.currentTimeMillis () + ".png";

Bestand scrFile = getScreenShotFile (stuurprogramma);

String screenWidthHeight = getImageWidthHeight (scrFile);

// als u een screenshot wilt opslaan in een lokaal systeem, schakelt u de onderstaande regel in

// FileUtils.copyFile (scrFile, nieuw bestand ("C: // screenshot //" + imageName));

insertImageDB (scrByte, scenariodenaam, imageName, screenWidthHeight,

browser);

Thread (1000);

}

public static String getImageWidthHeight (File imageFile) gooit IOException {

BufferedImage bimg = ImageIO.read (imageFile);

int imageWidth = bimg.getWidth ();

int imageHeight = bimg.getHeight ();

if (imageWidth! = 0) {

return imageWidth + "x" + imageHeight;

} else {

geef "FullScreenx" + imageHeight terug;

}

}

openbaar statisch bestand getScreenShotFile (WebDriver-stuurprogramma) {

// WebDriver-stuurprogrammaA = nieuwe Augmenter (). Augment (stuurprogramma);

return ((TakesScreenshot) -stuurprogramma) .getScreenshotAs (OutputType.FILE);

}

public static byte [] getScreenShotBytes (WebDriver-stuurprogramma) {

return ((TakesScreenshot) -stuurprogramma) .getScreenshotAs (OutputType.BYTES);

}

public static void insertImageDB (byte [] imageByte, String scenName,

String imageName, String screenWidthHeight, String-browser)

genereert ClassNotFoundException {

Eigenschappen dbProp = nieuwe eigenschappen ();

InputStream dbPropInput = null;

ResultSet rs = null;

PreparedStatement ps = null;

Verbinding con = nul;

// setImageSeqNo (getImageSeqNo () + 1);

int seqNo = getImageSeqNo ();

System.out.println (scenName + "-" + browser + "-"

+ screenWidthHeight + "- Shot Number:" + seqNo);

proberen {

String propPath = ". \ Src \ test \ resources \ props \ dbConnect.properties";

dbPropInput = nieuwe FileInputStream (propPath);

dbProp.load (dbPropInput); // bestand met laadeigenschappen

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 ("Afbeelding timestamp =" + sqlTimestamp);

ps.setEscapeProcessing (true);

ps.setQueryTimeout (90); // time-outwaarde kan later worden uitgeschakeld, afbeelding

ps.setString (1, "Project");

ps.setString (2, scenName);

ps.setString (3, browser);

ps.setString (4, screenWidthHeight);

ps.setTimestamp (5, sqlTimestamp);

ps.setInt (6, seqNo);

ps.setString (7, imageName);

ps.setBytes (8, imageByte);

// commentaar onder de regel om bijwerken van de database uit te schakelen

ps.executeUpdate ();

} catch (IOException e) {

e.printStackTrace ();

} catch (SQLException e) {

e.printStackTrace ();

} Tenslotte {

proberen {

if (dbPropInput! = null)

dbPropInput.close ();

if (rs! = null)

rs.close ();

if (ps! = null)

ps.close ();

if (con! = null)

con.close ();

} catch (Uitzondering e) {

e.printStackTrace ();

}

}

}

public static String getBrowserAndVersion () {

String browser_version = null;

Capabilities cap = ((RemoteWebDriver) -stuurprogramma) .getCapabilities ();

String browsername = cap.getBrowserName ();

// Dit blok om IE-versienummer te achterhalen

if ("internet explorer" .equalsIgnoreCase (browsername)) {

String uAgent = (String) ((JavascriptExecutor) -stuurprogramma)

.executeScript ("return navigator.userAgent;");

System.out.println (uAgent);

// uAgent geretourneerd als "MSIE 8.0 Windows" voor IE8

if (uAgent.contains ("MSIE") && uAgent.contains ("Windows")) {

browser_version = uAgent.substring (uAgent.indexOf ("MSIE") + 5,

uAgent.indexOf ("Windows") - 2);

} else if (uAgent.contains ("Trident / 7.0")) {

browser_version = "11.0";

} else {

browser_version = "00";

}

} else {

// Browserversie voor Firefox en Chrome

browser_version = cap.getVersion (); // .split (".") [0];

}

String browserversion = browser_version.substring (0,

browser_version.indexOf ( “”));

String bVersion = String.format ("% 02d", Integer.parseInt (browserversion));

return ((browsernaam) + "_" + bVersion);

}

public static String browserNameConvert (String browser_name) {

if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name, "explorer")) {

return "IE";

} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name, "firefox")) {

return "FF";

} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name, "chrome")) {

return "CH";

} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name, "safari")) {

return "SF";

} else {

return "NA";

}

}

}

MSSQL Database Connection Property-bestand met gebruikersreferenties en opslagprocedure

################## dbConnect.properties ##################

dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver

dbURL = jdbc: sqlserver: // YOURSERVERURL; databank = databasename; user = USERNAME; password = wachtwoord

SPSql = {call STOREPROCEDURE (?, ?, ?, ?, ?, ?, ?, ?)}

Om in de database op te slaan, wordt de opslagprocedure die al in dit voorbeeld is gemaakt en al deze gegevens voor databaseverbinding en opslagprocedure in het eigenschappenbestand vermeld.

De browsernaam die converteert naar 2 verkorte verkorte formulieren zoals FF (Firefox), CH (Chrome) enz. Dit is ook in staat om browserversies programmatisch te vinden, inclusief het versienummer van Internet Explorer. Dit script ondersteunt Internet Explorer-versies 8, 9, 10, 11.

Vorige Artikel

10 Instellingen die u moet veranderen naar een veilige iPhone

10 Instellingen die u moet veranderen naar een veilige iPhone

Facebook tjilpen Pinterest WhatsApp Telegram Denk je dat het onmogelijk is om een ​​iPhone te hacken? Hoewel Apple's iOS robuuster en veiliger is, kun je niet uitsluiten dat je waardevolle gegevens van je iPhone kunt hacken of stelen. Om uw gegevens tegen hackers te beschermen, moet u ervoor zorgen dat u alle beveiligingsfuncties gebruikt die beschikbaar zijn op de iPhone. Ap...

Volgende Artikel

System Image Backup uitvoeren in Windows 8.1

System Image Backup uitvoeren in Windows 8.1

Het is veilig om een ​​System Image Backup van Windows 8.1 te hebben zodra deze is bijgewerkt. Dit is belangrijk omdat Windows 8.1 als een update voor de bestaande Windows 8-gebruikers wordt geïnstalleerd via de Windows Store. Normaal gesproken zullen er geen DVD's beschikbaar zijn voor het opnieuw installeren van Windows 8.1 bi...