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

Las 7 mejores aplicaciones de Mac para desarchivar / archivar archivos con contraseña.

Las 7 mejores aplicaciones de Mac para desarchivar / archivar archivos con contraseña.

Facebook Gorjeo Pinterest WhatsApp Telegrama Hay una utilidad de archivo incorporada para Mac que funciona bien. Pero cuando busca un unarchiver para Mac, no es fácil encontrar uno. Hay aplicaciones dedicadas para desarchivar Mac para descomprimir archivos comprimidos con buenas características. Si está buscando soluciones gratuitas para descomprimir o comprimir archivos en Mac, existen algunas aplicaciones de buena calidad para realizar la compresión de archivos. En...

Artículo Siguiente

Edusson Review: Servicio de escritura confiable para profesionales y estudiantes.

Edusson Review: Servicio de escritura confiable para profesionales y estudiantes.

No todos los que terminan su escuela secundaria o universidad son lo suficientemente competentes como para terminar un ensayo completo o un trabajo de investigación. Algunos se encuentran apenas logrando escribir todos sus documentos de investigación para que se pierdan algunas partes o se estresen cuando se acerca la fecha límite. ¿...