So machen Sie einen Screenshot und speichern ihn in die MSSQL-Datenbank mit Java und Selenium Webriver



Dies ist zum Erstellen eines Screenshots mit Selenium Webdriver und zum Speichern in der MS SQL-Datenbank. Das Bild wird in der Datenbank gespeichert, und der Bildname wird mit Browsername, Browserversion, Sequenznummer und Szenarioname angehängt. Dieser Code wird von Chrome, Firefox, Internet Explorer und Safari unterstützt.

Es gibt eine weitere Option zwischen Zeile 63-70, um das Bild in einem lokalen Ordner zu speichern, wenn Sie möchten. Sie können einen Ordner im lokalen System festlegen. Das Bild wird in dem Ordner gespeichert, den Sie im PNG-Format und im Byte-Format in der MSSQL-Datenbank angegeben haben.

Machen Sie einen Screenshot und speichern Sie ihn mithilfe von Java und Selenium Webriver in der MSSQL-Datenbank

Paket com.main;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileInputStream;

java.io.IOException importieren;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.Properties;

import java.util.concurrent.TimeUnit;

Import 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;

öffentliche Klasse ImageSave {

private static int imageSeqNo = 0;

privater statischer String scenName;

privater statischer WebDriver-BrowserDriver;

private static int browserWidth;

privates statisches int browserHeight;

öffentlicher statischer String-Browser;

öffentlicher statischer WebDriver-Treiber;

public static int getBrowserWidth () {

return 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) wirft Ausnahme {

// BrowserDriver.getCurrentDriver ();

}

public static void addScreenshot (WebDriver-Treiber) löst IOException aus,

ClassNotFoundException, InterruptedException {

byte [] scrByte = getScreenShotBytes (Treiber);

browser = getBrowserAndVersion ();

String SzenarioName = getScenName ();

String imageName = SzenarioName + "" + Browser + ""

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

Datei scrFile = getScreenShotFile (Treiber);

String screenWidthHeight = getImageWidthHeight (scrFile);

// Wenn Sie das Screenshot-Bild im lokalen System speichern möchten, aktivieren Sie die folgende Zeile

// FileUtils.copyFile (scrFile, neue Datei ("C: // screenshot //" + imageName));

insertImageDB (scrByte, SzenarioName, Bildname, screenWidthHeight,

Browser);

Gewindeschlaf (1000);

}

public static String getImageWidthHeight (File imageFile) löst IOException aus. {

BufferedImage bimg = ImageIO.read (imageFile);

int imageWidth = bimg.getWidth ();

int imageHeight = bimg.getHeight ();

if (imageWidth! = 0) {

return imageWidth + "x" + imageHeight;

} else {

return “FullScreenx” + imageHeight;

}

}

public static File getScreenShotFile (WebDriver-Treiber) {

// WebDriver driverA = neuer Augmenter (). Augment (Treiber);

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

}

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

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

}

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

String imageName, String screenWidthHeight, String-Browser)

löst ClassNotFoundException {aus

Eigenschaften dbProp = new Properties ();

InputStream dbPropInput = null;

ResultSet rs = null;

PreparedStatement ps = null;

Verbindung con = null;

// setImageSeqNo (getImageSeqNo () + 1);

int seqNo = getImageSeqNo ();

System.out.println (scenName + "—-" + Browser + "-")

+ screenWidthHeight + ”—- Nummer der Aufnahme:” + seqNo);

Versuchen {

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

dbPropInput = new FileInputStream (propPath);

dbProp.load (dbPropInput); // Eigenschaftendatei laden

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 =" + Zeitstempel = sqlTimestamp);

ps.setEscapeProcessing (true);

ps.setQueryTimeout (90); // Zeitüberschreitung kann später deaktiviert werden, Bild

ps.setString (1, "Projekt");

ps.setString (2, scenName);

ps.setString (3, Browser);

ps.setString (4, screenWidthHeight);

ps.setTimestamp (5, sqlTimestamp);

ps.setInt (6, Folge-Nr.);

ps.setString (7, bildname);

ps.setBytes (8, imageByte);

// Kommentar unterhalb der Zeile, um die Aktualisierung der Datenbank zu deaktivieren

ps.executeUpdate ();

} catch (IOException e) {

e.printStackTrace ();

} catch (SQLException e) {

e.printStackTrace ();

} endlich {

Versuchen {

if (dbPropInput! = null)

dbPropInput.close ();

if (rs! = null)

rs.close ();

if (ps! = null)

ps.close ();

if (con! = null)

con.close ();

} catch (Ausnahme e) {

e.printStackTrace ();

}

}

}

public static String getBrowserAndVersion () {

String browser_version = null;

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

Zeichenfolge browsername = cap.getBrowserName ();

// Dieser Block zum Ermitteln der IE-Versionsnummer

if ("Internet Explorer" .equalsIgnoreCase (Browsername)) {

Zeichenfolge uAgent = (Zeichenfolge) ((JavascriptExecutor) -Treiber)

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

System.out.println (uAgent);

// uAgent Rückkehr als "MSIE 8.0 Windows" für IE8

if (uAgent.contains ("MSIE") &&Agent.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 {

// Browserversion für Firefox und 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 ((browsername) + "_" + bVersion);

}

public static String browserNameConvert (String browser_name) {

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

Browsername, "Explorer")) {

Rückgabe “IE”;

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

Browsername, "firefox")) {

Rückkehr “FF”;

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

Browsername, "Chrome")) {

Rückkehr "CH";

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

Browsername, "Safari")) {

Rückkehr "SF";

} else {

Rückkehr "NA";

}

}

}

MSSQL-Datenbankverbindungseigenschaftsdatei mit Benutzeranmeldeinformationen und Store Procedure

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

dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver

dbURL = jdbc: sqlserver: // YOURSERVERURL; database = DATABASENAME; user = USERNAME; password = PASSWORD

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

Zum Speichern in der Datenbank werden die in diesem Beispiel bereits erstellte Speicherprozedur und alle diese Daten für Datenbankverbindung und Speicherprozedur in der Eigenschaftsdatei aufgeführt.

Der Name des Browsers wird in 2-stellige Kurzformen wie FF (Firefox), CH (Chrome) usw. konvertiert. Dies ist auch in der Lage, die Browserversion einschließlich der Internet Explorer-Versionsnummer programmgesteuert zu ermitteln. Dieses Skript unterstützt die Internet Explorer-Versionen 8, 9, 10, 11.

Vorherige Artikel

Beste 7 kostenlose Tools zum Überprüfen des SSD-Zustands und zur Überwachung der Leistung

Beste 7 kostenlose Tools zum Überprüfen des SSD-Zustands und zur Überwachung der Leistung

SSDs dringen nach und nach in den HDD-Markt ein und ersetzen die reguläre Festplatte in Laptops und High-End-Desktops. Solid-State-Geräte bieten im Vergleich zu herkömmlichen sich drehenden Festplatten eine hohe Leistung. Dieses Flash-basierte Speichergerät verbraucht weniger Akku, um Daten mit relativ hoher Geschwindigkeit zu lesen und zu schreiben, was eine längere Akkulaufzeit für Ihre Laptops garantiert. Das ...

Nächster Artikel

10 besten Städtebauspiele für iOS und Android (Online und Offline)

10 besten Städtebauspiele für iOS und Android (Online und Offline)

Viele Menschen befriedigen ihren Bau- und Bauanspruch mit Hilfe von Stadtspielen. Aufgrund des reichhaltigen grafischen Inhalts und der unterstützenden Hardware im mobilen Betriebssystem kann eine Person mehrere Hausbauspiele spielen und die Stadt oder die Stadt mit ihrer Phantasie gestalten. Diese Art der Bau einer Stadt Spiele ermöglicht es, große Bereiche zu machen, die alle Annehmlichkeiten und Einrichtungen für die Menschen hat. Wä...