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

Comment rendre le téléphone intelligent inaccessible pendant l'utilisation.

Comment rendre le téléphone intelligent inaccessible pendant l'utilisation.

Facebook Gazouillement Pinterest WhatsApp Télégramme Parfois, vous voudrez peut-être faire une pause dans tous ces appels pour regarder des vidéos amusantes ou naviguer sur Internet. Cette astuce peut rendre votre téléphone Android, iPhone, Blackberry ou Windows inaccessible pour les appels entrants sans pour autant perturber les appels sortants ou la navigation sur Internet. L...

Article Suivant

Comment verrouiller Android Pie pour désactiver les notifications et Smart Lock

Comment verrouiller Android Pie pour désactiver les notifications et Smart Lock

Facebook Gazouillement Pinterest WhatsApp Télégramme Le mode de verrouillage est une nouvelle fonctionnalité d'Android Pie. C’est une fonctionnalité intéressante que vous pouvez utiliser pour masquer toutes les notifications et qui nécessite le mot de passe pour déverrouiller le téléphone. Lorsque v...