Comment prendre une capture d'écran et enregistrer dans la base de données MSSQL en utilisant Java et Selenium Webriver



Ceci consiste à prendre une capture d’écran avec Selenium Webdriver et à l’enregistrer dans la base de données MS SQL. L'image est enregistrée dans la base de données avec le nom de l'image ajoutée avec le nom du navigateur, sa version, le numéro de séquence et le nom du scénario. Ce code est pris en charge par Chrome, Firefox, Internet Explorer et Safari.

Il existe une option supplémentaire entre les lignes 63 à 70 pour enregistrer l’image dans un dossier local, si vous le souhaitez. Vous pouvez définir un dossier dans le système local. Il enregistre l'image dans le dossier que vous avez spécifié au format png et au format octet dans la base de données MSSql.

Prendre une capture d'écran et sauvegarder dans la base de données MSSQL en utilisant Java et Selenium Webriver

paquet com.main;

importer java.awt.image.BufferedImage;

importer java.io.File;

importer java.io.FileInputStream;

importer java.io.IOException;

importer java.io.InputStream;

import java.sql.Connection;

importer java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

importer java.sql.SQLException;

importer java.util.Properties;

importer java.util.concurrent.TimeUnit;

importer javax.imageio.ImageIO;

importer org.openqa.selenium.Capabilities;

import org.openqa.selenium.JavascriptExecutor;

import org.openqa.selenium.OutputType;

importer org.openqa.selenium.TakesScreenshot;

importer org.openqa.selenium.WebDriver;

importer org.openqa.selenium.remote.RemoteWebDriver;

Classe publique ImageSave {

privé statique int imageSeqNo = 0;

chaîne privée statique scenName;

navigateur Web statique privéDriverDriver;

int privée statique browserWidth;

privé statique int browserHeight;

navigateur statique public de chaînes;

pilote WebDriver statique public;

public static int getBrowserWidth () {

renvoyer browserWidth;

}

public static int getBrowserHeight () {

return browserHeight;

}

public statique String getScenName () {

retour scenName;

}

public static int getImageSeqNo () {

retourne imageSeqNo;

}

public statique void main (String [] args) lève Exception {

// BrowserDriver.getCurrentDriver ();

}

public statique void addScreenshot (pilote WebDriver) lève IOException,

ClassNotFoundException, InterruptedException {

byte [] scrByte = getScreenShotBytes (pilote);

navigateur = getBrowserAndVersion ();

String scenarioName = getScenName ();

String imageName = scenarioName + ”” + navigateur + ””

+ System.currentTimeMillis () + “.png”;

Fichier scrFile = getScreenShotFile (pilote);

String screenWidthHeight = getImageWidthHeight (scrFile);

// si vous voulez enregistrer une capture d'écran dans le système local, activez la ligne ci-dessous

// FileUtils.copyFile (scrFile, new File (“C: // capture d'écran //” + imageName));

insertImageDB (scrByte, scenarioName, imageName, screenWidthHeight,

navigateur);

Enfiler (1000);

}

Static String publique public getImageWidthHeight (Fichier imageFile) lève IOException {

BufferedImage bimg = ImageIO.read (imageFile);

int imageWidth = bimg.getWidth ();

int imageHeight = bimg.getHeight ();

si (largeur d'image! = 0) {

return imageWidth + "x" + imageHeight;

} autre {

retourne “FullScreenx” + imageHeight;

}

}

Fichier statique public getScreenShotFile (pilote WebDriver) {

// WebDriver driverA = new Augmenter (). Augment (driver);

return ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE);

}

public static byte [] getScreenShotBytes (pilote WebDriver) {

return ((TakesScreenshot) driver) .getScreenshotAs (OutputType.BYTES);

}

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

String imageName, String screenWidthHeight, Navigateur de chaînes)

lève ClassNotFoundException {

Propriétés dbProp = new Properties ();

InputStream dbPropInput = null;

ResultSet rs = null;

PreparedStatement ps = null;

Connexion con = null;

// setImageSeqNo (getImageSeqNo () + 1);

int seqNo = getImageSeqNo ();

System.out.println (scenName + ”—-” + navigateur + ”—-”

+ screenWidthHeight + ”—- Numéro de prise de vue:” + seqNo);

essayer {

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

dbPropInput = new FileInputStream (propPath);

dbProp.load (dbPropInput); // charge le fichier de propriétés

String dbDriver = (dbProp.getProperty (“dbDriver”));

Chaîne dbURL = (dbProp.getProperty (“dbURL”));

Chaîne 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 («Horodatage de l'image =» + sqlTimestamp);

ps.setEscapeProcessing (true);

ps.setQueryTimeout (90); // valeur de délai d'attente peut désactiver plus tard, image

ps.setString (1, «Projet»);

ps.setString (2, scenName);

ps.setString (3, navigateur);

ps.setString (4, screenWidthHeight);

ps.setTimestamp (5, sqlTimestamp);

ps.setInt (6, seqNo);

ps.setString (7, imageName);

ps.setBytes (8, imageByte);

// commenter sous la ligne pour désactiver la mise à jour de la base de données

ps.executeUpdate ();

} catch (IOException e) {

e.printStackTrace ();

} catch (SQLException e) {

e.printStackTrace ();

} enfin {

essayer {

if (dbPropInput! = null)

dbPropInput.close ();

si (rs! = null)

rs.close ();

si (ps! = null)

ps.close ();

si (con! = null)

con.close ();

} catch (Exception e) {

e.printStackTrace ();

}

}

}

public static String getBrowserAndVersion () {

String browser_version = null;

Capabilities de cap = (pilote (RemoteWebDriver)) .getCapabilities ();

String Browsername = cap.getBrowserName ();

// Ce bloc pour trouver le numéro de version d'IE

if (“internet explorer” .equalsIgnoreCase (nom d'utilisateur)) {

String uAgent = (String) (pilote (JavascriptExecutor))

.executeScript («return navigator.userAgent;»);

System.out.println (uAgent);

// uAgent renvoyé sous «MSIE 8.0 Windows» pour IE8

if (uAgent.contains («MSIE») && uAgent.contains («Windows»)) {

version_avertisseur = uAgent.substring (uAgent.indexOf («MSIE») + 5,

uAgent.indexOf (“Windows”) - 2);

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

version_verseur = “11.0”;

} autre {

browser_version = "00";

}

} autre {

// Version du navigateur pour Firefox et 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 ((nom d'utilisateur) + “_” + bVersion);

}

Chaîne statique publique browserNameConvert (String nom_utilisateur) {

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

nom de navigateur, “explorer”)) {

renvoyer «IE»;

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

nom du navigateur, “firefox”)) {

renvoyer «FF»;

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

nom du navigateur, “chrome”)) {

renvoyer «CH»;

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

Nom du navigateur, “safari”)) {

renvoyer «SF»;

} autre {

renvoyer «NA»;

}

}

}

Fichier de propriétés de connexion de base de données MSSQL avec les informations d'identification de l'utilisateur et la procédure de stockage

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

dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver

dbURL = jdbc: sqlserver: // YOURSERVERURL; base de données = DATABASENAME; utilisateur = NOM D'UTILISATEUR; mot de passe = PASSWORD

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

Pour enregistrer dans la base de données, la procédure de stockage déjà créée dans cet exemple et toutes ces données pour la connexion à la base de données et la procédure de stockage sont répertoriées dans le fichier de propriétés.

Le nom du navigateur est converti en formes abrégées à 2 caractères telles que FF (Firefox), CH (Chrome), etc. Il est également capable de trouver par programme la version du navigateur, y compris le numéro de version d’Internet Explorer. Ce script prend en charge les versions Internet Explorer 8, 9, 10, 11.

Article Précédent

6 meilleures applications de navigation privée Android sécurisées lors de la navigation

6 meilleures applications de navigation privée Android sécurisées lors de la navigation

Facebook Gazouillement Pinterest WhatsApp Télégramme La technologie de navigation privée ou de navigation anonyme attire la plupart des membres de la génération Y à utiliser Internet sans créer d'empreinte pour les regards indiscrets. Grâce à la navigation privée sur Internet, il devient parfois essentiel de pouvoir rester totalement anonyme tout en recherchant des informations critiques sur le Web. En navig...

Article Suivant

7 applications de stationnement Android gratuites localiser les parkings publics et la voiture garée

7 applications de stationnement Android gratuites localiser les parkings publics et la voiture garée

Facebook Gazouillement Pinterest WhatsApp Télégramme Vous avez peut-être eu du mal à trouver un terrain embêtant lorsque vous vous rendez en ville ou dans un lieu animé. La plupart d'entre nous connaissent les places de stationnement disponibles dans notre ville natale. Cependant, lorsque vous vous rendez en déplacement professionnel dans cette toute nouvelle zone, il est fastidieux de trouver un parking public à proximité de votre destination. Si vous...