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 arreglar Grub Bootloader después de eliminar la partición de Ubuntu?

¿Cómo arreglar Grub Bootloader después de eliminar la partición de Ubuntu?

Alguna vez ha configurado el sistema operativo de arranque dual en la computadora portátil con Ubuntu y Windows. Este sistema de arranque dual parecía estar bien hasta que, por alguna extraña razón, decidió eliminar la partición Ubuntu Linux de Windows. Oh, chico, ahora no tienes camino por recorrer, ya que no puedes encontrar una manera de iniciar tu sistema de Windows. Enco...

Artículo Siguiente

6 aplicaciones para mensajes entre iPhone, Android y MAC

6 aplicaciones para mensajes entre iPhone, Android y MAC

Facebook Gorjeo Pinterest WhatsApp Telegrama La capacidad de mensajería de su MAC como su móvil es una característica esencial en este mundo ocupado. La mayoría de nosotros pasamos un tiempo considerable en la computadora y si puede enviar mensajes desde su computadora en lugar de las pequeñas teclas táctiles del móvil, ahorrará mucho tiempo y dinero. La may...