Cómo tomar la captura de pantalla y guardar en la base de datos MSSQL usando Java y Selenium Webriver



Esto es para tomar Captura de pantalla utilizando Selenium Webdriver y guardar en la Base de datos MS SQL. La imagen se está guardando en la base de datos con el nombre de la imagen junto con el nombre del navegador, la versión del navegador, el número de secuencia y el nombre del escenario. Este código es compatible con Chrome, Firefox, Internet Explorer y Safari.

Hay una opción más entre la línea 63-70 para guardar la imagen en una carpeta local si lo desea. Puede configurar una carpeta en el sistema local y se guardará la imagen en la carpeta que especificó en formato png y byte en la base de datos MSSql.

Tome la captura de pantalla y guárdela en la base de datos MSSQL usando Java y Selenium Webriver

paquete com.main;

importar java.awt.image.BufferedImage;

import java.io.File;

importar java.io.FileInputStream;

import java.io.IOException;

importar java.io.InputStream;

importar java.sql.Connection;

importar java.sql.DriverManager;

importar java.sql.PreparedStatement;

import java.sql.ResultSet;

importar java.sql.SQLException;

import java.util.Properties;

import java.util.concurrent.TimeUnit;

importar javax.imageio.ImageIO;

importar org.openqa.selenium.Capabilities;

importar org.openqa.selenium.JavascriptExecutor;

importar org.openqa.selenium.OutputType;

importar org.openqa.selenium.TakesScreenshot;

importar org.openqa.selenium.WebDriver;

importar org.openqa.selenium.remote.RemoteWebDriver;

clase pública ImageSave {

private static int imageSeqNo = 0;

cadena estática privada scenName;

WebDriver estático privado browserDriver;

int estático privado browser browserWidth;

navegador estático privado intHeight;

navegador de cadenas estático público;

controlador de WebDriver estático público;

public static int getBrowserWidth () {

volver browserWidth;

}

public static int getBrowserHeight () {

volver browserHeight;

}

Cadena estática pública getScenName () {

devolver scenName;

}

public static int getImageSeqNo () {

devuelve imageSeqNo;

}

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

// BrowserDriver.getCurrentDriver ();

}

public static void addScreenshot (controlador WebDriver) emite IOException,

ClassNotFoundException, InterruptedException {

byte [] scrByte = getScreenShotBytes (controlador);

browser = getBrowserAndVersion ();

String sceneryName = getScenName ();

Cadena imagenNombre = escenarioNombre + "" + navegador + ""

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

Archivo scrFile = getScreenShotFile (controlador);

String screenWidthHeight = getImageWidthHeight (scrFile);

// si desea guardar la imagen de captura de pantalla en el sistema local, habilite la línea a continuación

// FileUtils.copyFile (scrFile, nuevo archivo (“C: // screenshot //” + imageName));

insertImageDB (scrByte, escenarioNombre, imagenNombre, screenWidthHeight,

navegador);

Thread.sleep (1000);

}

la cadena estática pública getImageWidthHeight (archivo imageFile) lanza IOException {

BufferedImage bimg = ImageIO.read (imageFile);

int imageWidth = bimg.getWidth ();

int imageHeight = bimg.getHeight ();

if (imageWidth! = 0) {

devuelve imageWidth + “x” + imageHeight;

} else {

devuelve "FullScreenx" + imageHeight;

}

}

Archivo estático público getScreenShotFile (controlador WebDriver) {

// controlador de WebDriverA = new Augmenter (). Augment (driver);

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

}

byte estático público [] getScreenShotBytes (controlador WebDriver) {

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

}

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

String imageName, String screenWidthHeight, String browser)

lanza la excepción ClassNotFoundException {

Propiedades dbProp = propiedades nuevas ();

InputStream dbPropInput = null;

ResultSet rs = null;

PreparedStatement ps = null;

Conexión con = null;

// setImageSeqNo (getImageSeqNo () + 1);

int seqNo = getImageSeqNo ();

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

+ screenWidthHeight + ”—- Número de disparo:” + seqNo);

tratar {

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

dbPropInput = new FileInputStream (propPath);

dbProp.load (dbPropInput); // cargar el archivo de propiedades

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

ps.setEscapeProcessing (true);

ps.setQueryTimeout (90); // el valor de tiempo de espera puede deshabilitarse más tarde, imagen

ps.setString (1, “Proyecto”);

ps.setString (2, scenName);

ps.setString (3, navegador);

ps.setString (4, screenWidthHeight);

ps.setTimestamp (5, sqlTimestamp);

ps.setInt (6, seqNo);

ps.setString (7, imageName);

ps.setBytes (8, imageByte);

// comentar debajo de la línea para deshabilitar la actualización de la base de datos

ps.executeUpdate ();

} captura (IOException e) {

e.printStackTrace ();

} captura (SQLException e) {

e.printStackTrace ();

} finalmente {

tratar {

if (dbPropInput! = null)

dbPropInput.close ();

si (rs! = nulo)

rs.close ();

si (ps! = nulo)

ps.close ();

si (con! = nulo)

con.close ();

} captura (excepción e) {

e.printStackTrace ();

}

}

}

pública String estática getBrowserAndVersion () {

Cadena browser_version = null;

Capabilities cap = ((RemoteWebDriver) driver) .getCapabilities ();

String browsername = cap.getBrowserName ();

// Este bloque para averiguar el número de versión de IE

if ("internet explorer" .equalsIgnoreCase (nombre de navegador)) {

String uAgent = (String) ((JavascriptExecutor) driver)

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

System.out.println (uAgent);

// uAgent regresa como "MSIE 8.0 Windows" para 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 {

// Versión del navegador para Firefox y 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 ((nombre de usuario) + “_” + bVersion);

}

Cadena estática pública browserNameConvert (String browser_name) {

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

nombre de navegador, “explorador”)) {

devuelve "IE";

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

nombre de navegador, “firefox”)) {

devuelve "FF";

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

nombre de navegador, "chrome")) {

devuelve "CH";

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

nombre de navegador, "safari")) {

devuelve "SF";

} else {

devuelve "NA";

}

}

}

Archivo de propiedades de conexión de base de datos MSSQL con credenciales de usuario y procedimiento de almacenamiento

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

dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver

dbURL = jdbc: sqlserver: // YOURSERVERURL; database = DATABASENAME; usuario = USERNAME; contraseña = PASSWORD

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

Para guardar en la base de datos, el procedimiento de almacenamiento ya creado en este ejemplo y todos estos datos para la conexión de la base de datos y el procedimiento de almacenamiento se enumeran en el archivo de propiedades.

El nombre del navegador se convierte a formas cortas de 2 caracteres como FF (Firefox), CH (Chrome), etc. Esto también es capaz de encontrar la versión del navegador mediante programación incluyendo el número de versión de Internet Explorer. Este script es compatible con las versiones de Internet Explorer 8, 9, 10, 11.

Artículo Anterior

Cómo obtener una cuenta de Netflix gratis (legalmente)

Cómo obtener una cuenta de Netflix gratis (legalmente)

Netflix es Netflix y no importa cuántos servicios de transmisión de contenido lleguen a la web, nadie ha sido capaz de superar o incluso acercarse a su gran popularidad. Esto se debe a que Netflix no solo ofrece la mayor cantidad de películas, documentales y originales, sino también los más populares y de calidad. La ...

Artículo Siguiente

¿Cómo usar el iPad como segunda pantalla para Mac y Windows?

¿Cómo usar el iPad como segunda pantalla para Mac y Windows?

Facebook Gorjeo Pinterest WhatsApp Telegrama Obtener una segunda pantalla para sistemas Mac o Windows puede ser bastante costoso, ya que debe buscar la calidad de visualización y otros puntos de referencia. Pero, ¿y si pudieras resolverlo usando el iPad en tus manos? Apple lanzó un nuevo iPad Pro con una pantalla bastante grande y buena calidad de visualización. Ah...