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

6 aplicaciones iOS gratuitas para transmitir música desde la nube sin conexión

6 aplicaciones iOS gratuitas para transmitir música desde la nube sin conexión

Ahora estamos entrando en el mundo del almacenamiento en la nube en lugar de tarjetas de memoria y almacenamiento externo. La aplicación de música iOS puede transmitir música desde el almacenamiento en la nube utilizando una buena aplicación de música en la nube. No es necesario usar iTunes ni el cable del dispositivo mientras reproduce música desde el almacenamiento en la nube. Pres...

Artículo Siguiente

Cómo suscribir el calendario de Google a Windows 8

Cómo suscribir el calendario de Google a Windows 8

¿Estás harto de intentar sincronizar con Google Calendar? Probablemente podría estar registrado en su cuenta de Google Calendar después del 30 de enero de 2013. Es la fecha en que Google detuvo el Protocolo de sincronización activa de Microsoft Exchange en sus servidores. El resultado es que no se sincronizan las nuevas cuentas de Google Calendar con la aplicación de calendario de Windows 8. Todo...