Cum să luați screenshot și să salvați în baza de date MSSQL folosind Java și Selenium Webriver



Acest lucru este de a lua Screenshot folosind Selenium Webdriver și pentru a salva în baza de date MS SQL. Imaginea salvează în baza de date cu numele de imagine adăugând numele browserului, versiunea browserului, numărul de ordine și numele scenariului. Acest cod este acceptat de Chrome, Firefox, Internet Explorer și Safari.

Există încă o opțiune între linia 63-70 pentru a salva imaginea într-un director local dacă doriți. Puteți seta un dosar în sistemul local și acesta va salva imaginea în directorul specificat în format png și format de octet în baza de date MSSql.

Ia Screenshot și salvați-o în baza de date MSSQL utilizând Java și Selenium Webriver

pachet com.main;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

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;

public class ImageSave {

privat static int imageSeqNo = 0;

static static String scenName;

static WebDriver browserDriver;

static int int browserWidth;

static int int browserHeight;

browser publicitar static;

static șofer WebDriver;

statică publică int getBrowserWidth () {

returnează browserulWidth;

}

public static int getBrowserHeight () {

retur browserHeight;

}

statică publică statică getScenName () {

returnați scenName;

}

statică publică int getImageSeqNo () {

retur imageSeqNo;

}

public static void principal (String [] args) aruncă Excepție {

// BrowserDriver.getCurrentDriver ();

}

public static void addScreenshot (șofer WebDriver) aruncă IOException,

ClassNotFoundException, InterruptedException {

octet [] scrByte = getScreenShotBytes (driver);

browser = getBrowserAndVersion ();

String scenarioName = getScenName ();

String imageName = scenariuName + "" + browser + ""

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

Fișierul scrFile = getScreenShotFile (driver);

Ecranul șirWidthHeight = getImageWidthHeight (scrFile);

// dacă doriți să salvați fotografia ecranului în sistemul local, activați linia de mai jos

// FileUtils.copyFile (scrFile, fișier nou ("C: // screenshot //" + imageName));

insertImageDB (scrByte, scenarioName, imageName, screenWidthHeight,

browser-ul);

Thread.sleep (1000);

}

staticul static public getImageWidthHeight (File imageFile) aruncă IOException {

BufferedImage bimg = ImageIO.read (imagineFile);

int imagineWidth = bimg.getWidth ();

int imagineHeight = bimg.getHeight ();

dacă (imageWidth! = 0) {

retur de imagineWidth + "x" + imageHeight;

} altceva {

retur "FullScreenx" + imagineHeight;

}

}

fișierul public static getScreenShotFile (driver WebDriver) {

// driver WebDriverA = augmentator nou () augment (driver);

retur (șofer TakesScreenshot) .getScreenshotAs (OutputType.FILE);

}

public byte static [] getScreenShotBytes (driver WebDriver) {

retur (șofer (TakesScreenshot)) .getScreenshotAs (OutputType.BYTES);

}

public static void insertImageDB (octet [] imagineByte, String scenName,

String imageName, Ecran StringWidthHeight, Browser String)

aruncă ClassNotFoundException {

Proprietăți dbProp = Proprietăți noi ();

InputStream dbPropInput = null;

ResultSet rs = null;

PreparedStatement ps = null;

Conexiunea con = null;

/ / setImageSeqNo (getImageSeqNo () + 1);

int seqNo = getImageSeqNo ();

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

+ ecranWidthHeight + "- Număr Shot:" + seqNo);

încerca {

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

dbPropInput = noul FileInputStream (propPath);

dbProp.load (dbPropInput); // încărcați fișierul de proprietate

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.Dată dată = nouă java.util.Date ();

java.sql.Timestamp sqlTimestamp = noul java.sql.Timestamp (data.getTime ());

System.out.println ("Imagine Timestamp =" + sqlTimestamp);

ps.setEscapeProcessing (true);

ps.setQueryTimeout (90); // valoarea de expirare poate fi dezactivată mai târziu

ps.setString (1, "Proiect");

ps.setString (2, scenName);

ps.setString (3, browser);

ps.setString (4, ecranWidthHeight);

ps.setTimestamp (5, sqlTimestamp);

ps.setInt (6, seqNo);

ps.setString (7, imagineName);

ps.setBytes (8, imagineByte);

// comentariu de mai jos pentru a dezactiva actualizarea bazei de date

ps.executeUpdate ();

} captură (IOException e) {

e.printStackTrace ();

} captură (SQLException e) {

e.printStackTrace ();

} in cele din urma {

încerca {

dacă (dbPropInput! = null)

dbPropInput.close ();

dacă (rs! = null)

rs.close ();

dacă (ps! = null)

ps.close ();

dacă (con! = null)

con.close ();

} captură (Excepție e) {

e.printStackTrace ();

}

}

}

statică publică statică getBrowserAndVersion () {

String browser_version = null;

Cap capabilități = ((RemoteWebDriver) driver) .getCapabilities ();

String browsername = cap.getBrowserName ();

// Acest bloc pentru a afla numărul versiunii IE

dacă ("Internet Explorer" .equalsIgnoreCase (nume de browser)) {

String uAgent = (String) ((JavascriptExecutor) șofer)

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

System.out.println (uAgent);

// returnare uAgent ca "MSIE 8.0 Windows" pentru IE8

dacă (uAgent.contains ("MSIE") && uAgent.contains ("Windows")) {

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

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

} altfel dacă (uAgent.contains ("Trident / 7.0")) {

browser_version = "11.0";

} altceva {

browser_version = "00";

}

} altceva {

// Versiune browser pentru Firefox și Chrome

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

}

String browserversion = browser_version.substring (0,

browser_version.indexOf ( „“));

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

retur ((nume de browser) + "_" + bVersion);

}

static public Browser StringNameConvert (String browser_name) {

dacă (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

numele browserului, "explorer")) {

retur "IE";

} altfel dacă (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

numele browserului, "firefox")) {

retur "FF";

} altfel dacă (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

numele browserului, "chrome")) {

retur "CH";

} altfel dacă (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

numele browserului, "safari")) {

retur "SF";

} altceva {

returnați "NA";

}

}

}

Conexiunea bazei de date MSSQL Proprietăți cu acreditările utilizatorului și procedura de magazin

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

dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver

dbURL = jdbc: sqlserver: // YOURSERVERURL; baze de date = databasename; utilizator = USERNAME; parola = PAROLA

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

Pentru a salva în baza de date, procedura de stocare deja creată în acest exemplu și toate aceste date pentru conexiunea bazei de date și procedura de stocare sunt listate în fișierul proprietăți.

Numele browserului care convertește în 2 formule scurte de caractere, cum ar fi FF (Firefox), CH (Chrome) etc. Aceasta este de asemenea capabilă să găsească în mod programabil o versiune a browserului, inclusiv numărul versiunii Internet Explorer. Acest script acceptă versiunile Internet Explorer 8, 9, 10, 11.

Articolul Precedent

Cum de a afla telefonul Blackberry blocat sau deblocat?

Cum de a afla telefonul Blackberry blocat sau deblocat?

Nu există nicio modalitate de a utiliza telefonul mobil în afara țării dvs. dacă este blocat de furnizorul de servicii, cu excepția cazului în care furnizează un serviciu de roaming pentru un preț destul de bun. Dacă vă pregătiți pentru o călătorie și intenționați să utilizați telefonul mobil cu un alt card SIM, este bine să vă asigurați că telefonul este deblocat înainte de călătorie. Aceasta este modalitatea ...

Articolul Următor

Cum să sincronizați desktopul MAC și documentele cu Dropbox în timp real?

nor

Cum să sincronizați desktopul MAC și documentele cu Dropbox în timp real?

Facebook Stare de nervozitate pinterest WhatsApp Telegramă Ne păstrăm toate lucrările și fișierele fie în dosarul Desktop, fie în dosarul Documents din MAC pentru a obține un acces ușor la aceste fișiere. Nu este nimic altceva în neregulă cu privire la acest lucru, în afară de aglomerarea tuturor fișierelor în dosarul Desktop sau Document. Ce se va întâmp...