Como tirar uma captura de tela e salvar no banco de dados MSSQL usando Java e Selenium Webriver



Isso é para fazer Screenshot usando Selenium Webdriver e para salvar no banco de dados MS SQL. A imagem está sendo salva no banco de dados com o nome da imagem anexado com nome do navegador, versão do navegador, número de sequência e nome do cenário. Este código é suportado Chrome, Firefox, Internet Explorer e Safari.

Há mais uma opção entre a linha 63-70 para salvar a imagem em uma pasta local, se você quiser. Você pode definir uma pasta no sistema local e ela salvará a imagem na pasta especificada em formato png e formato de byte no Banco de Dados MSSql.

Tire uma captura de tela e salve no banco de dados MSSQL usando Java e Selenium Webriver

pacote com.main;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.Properties;

import java.util.concurrent.TimeUnit;

import javax.imageio.ImageIO;

import org.openqa.selenium.Capabilities;

import org.openqa.selenium.JavascriptExecutor;

import org.openqa.selenium.OutputType;

import org.openqa.selenium.TakesScreenshot;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.remote.RemoteWebDriver;

classe pública ImageSave {

private static int imageSeqNo = 0;

private static String scenName;

navegador de navegador WebDriver estático privado;

private static int browserWidth;

private static int browserHeight;

navegador público estático String;

driver WebDriver estático público;

public static int getBrowserWidth () {

return browserWidth;

}

public static int getBrowserHeight () {

retornar browserHeight;

}

public static String getScenName () {

return scenName;

}

public static int getImageSeqNo () {

return imageSeqNo;

}

public static void main (String [] args) gera uma exceção {

// BrowserDriver.getCurrentDriver ();

}

public static addScreenshot void (driver do WebDriver) lança IOException,

ClassNotFoundException, InterruptedException {

byte [] scrByte = getScreenShotBytes (driver);

browser = getBrowserAndVersion ();

String scenarioName = getScenName ();

String imageName = scenarioName + ”” + navegador + ””

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

Arquivo scrFile = getScreenShotFile (driver);

String screenWidthHeight = getImageWidthHeight (scrFile);

// se quiser salvar a imagem da captura de tela no sistema local, ative a linha abaixo

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

insertImageDB (scrByte, scenarioName, imageName, screenWidthHeight,

navegador);

Thread.sleep (1000);

}

public static String getImageWidthHeight (Arquivo imageFile) lança IOException {

BufferedImage bimg = ImageIO.read (imageFile);

int imageWidth = bimg.getWidth ();

int imageHeight = bimg.getHeight ();

if (imageWidth! = 0) {

return imageWidth + “x” + imageHeight;

} outro {

retornar “FullScreenx” + imageHeight;

}

}

Arquivo estático público getScreenShotFile (driver WebDriver) {

// WebDriver driverA = novo Augmenter (). Augment (driver);

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

}

public static byte [] getScreenShotBytes (driver do WebDriver) {

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

}

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

String imageName, String screenWidthHeight, navegador de sequência)

lança ClassNotFoundException {

Propriedades dbProp = new Properties ();

InputStream dbPropInput = nulo;

ResultSet rs = null;

PreparedStatement ps = null;

Conexão con = null;

// setImageSeqNo (getImageSeqNo () + 1);

int seqNo = getImageSeqNo ();

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

+ screenWidthHeight + ”—- Shot Number:” + seqNo);

experimentar {

Cadeia propPath = “. \ Src \ test \ resources \ props \ dbConnect.properties”;

dbPropInput = new FileInputStream (propPath);

dbProp.load (dbPropInput); // carrega o arquivo de propriedades

String dbDriver = (dbProp.getProperty (“dbDriver”));

Cadeia de caracteres 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); // valor de tempo limite pode ser desativado mais tarde, imagem

ps.setString (1, “Projeto”);

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);

// comentário abaixo da linha para desativar a atualização da base de dados

ps.executeUpdate ();

} catch (IOException e) {

e.printStackTrace ();

} pegar (SQLException e) {

e.printStackTrace ();

} finalmente {

experimentar {

if (dbPropInput! = null)

dbPropInput.close ();

if (rs! = null)

rs.close ();

if (ps! = null)

ps.close ();

if (con! = null)

con.close ();

} catch (exceção e) {

e.printStackTrace ();

}

}

}

public static String getBrowserAndVersion () {

Cadeia browser_version = null;

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

String nome do usuário = cap.getBrowserName ();

// Este bloco para descobrir o número da versão do IE

if (“internet explorer” .equalsIgnoreCase (nome do usuário)) {

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

.executeScript (“return navigator.userAgent;”);

System.out.println (uAgent);

// retorno do uAgent como “MSIE 8.0 Windows” para o 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”;

} outro {

browser_version = “00”;

}

} outro {

// Versão do navegador para o Firefox e o 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 ((nome do usuário) + “_” + bVersion);

}

público estático String browserNameConvert (String browser_name) {

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

browser_name, “explorer”))) {

retornar “IE”;

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

browser_name, “firefox”))) {

retornar “FF”;

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

browser_name, “chrome”)) {

retornar “CH”;

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

browser_name, “safari”)) {

retorno "SF";

} outro {

retornar “NA”;

}

}

}

Arquivo de propriedades de conexão de banco de dados MSSQL com credenciais de usuário e procedimento de armazenamento

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

dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver

dbURL = jdbc: sqlserver: // YOURSERVERURL; banco de dados = DATABASENAME; usuário = USERNAME; senha = PASSWORD

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

Para salvar no banco de dados, o procedimento de armazenamento já criado neste exemplo e todos esses dados para conexão de banco de dados e procedimento de armazenamento são listados no arquivo de propriedades.

O nome do navegador é convertido em dois formatos curtos, como FF (Firefox), CH (Chrome), etc. Isso também é capaz de encontrar a versão do navegador de forma programática, incluindo o número da versão do Internet Explorer. Este script suporta versões do Internet Explorer 8, 9, 10, 11.

Artigo Anterior

Guia Completo do Self-Publish eBook no Amazon Kindle

Guia Completo do Self-Publish eBook no Amazon Kindle

Publicar um eBook online não é uma tarefa difícil nos dias de hoje com as plataformas Amazon Kindle . Para facilitar o acesso aos autores e agentes de publicação, a Amazon iniciou o Kindle Direct Publishing , aberto para vários idiomas. Recentemente, a empresa expandiu sua disponibilidade para muitos outros idiomas da Ásia. Mais ...

Próximo Artigo

Ocultar azul Tick para falsificar o remetente do WhatsApp, mantendo recibos de leitura

Ocultar azul Tick para falsificar o remetente do WhatsApp, mantendo recibos de leitura

O WhatsApp é o serviço de mensagens mais popular e funciona bem com quase todos os Smartphones. WhatsApp permite que você saiba o status de entrega de sua mensagem quase em tempo real. Os dois tons cinza e azul ao lado de enviar mensagem indicam o status Entregue e Ler da sua mensagem. Este é um bom recurso para garantir que a mensagem seja entregue à caixa de entrada do WhatsApp. Voc...