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.