Ma to na celu zrobienie Screenshot przy użyciu Selenium Webdriver i zapisanie w bazie danych MS SQL. Obraz zapisywany jest w bazie danych wraz z nazwą obrazu z nazwą przeglądarki, wersją przeglądarki, numerem kolejnym i nazwą scenariusza. Ten kod jest obsługiwany przez Chrome, Firefox, Internet Explorer i Safari.
Między wierszami 63-70 jest jeszcze jedna opcja, aby zapisać obraz w folderze lokalnym, jeśli chcesz. Możesz ustawić folder w systemie lokalnym i zapisać obraz w folderze określonym w formacie png i formacie bajtów w bazie danych MSSql.
Zrób zrzut ekranu i zapisz w bazie danych MSSQL przy użyciu Java i Selenium Webriver
pakiet pakietowy;
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;
public class ImageSave {
prywatny statyczny int imageSeqNo = 0;
prywatny statyczny ciąg scenName;
prywatny statyczny przeglądarka internetowa WebDriver;
private static int browserWidth;
private static int browserHeight;
publiczna statyczna przeglądarka String;
publiczny statyczny sterownik WebDriver;
public static int getBrowserWidth () {
return browserWidth;
}
public static int getBrowserHeight () {
return browserHeight;
}
publiczny statyczny ciąg getScenName () {
return scenName;
}
publiczny statyczny int getImageSeqNo () {
return imageSeqNo;
}
public static void main (String [] args) throws Exception {
// BrowserDriver.getCurrentDriver ();
}
public static void addScreenshot (sterownik WebDriver) zgłasza wyjątek IOException,
ClassNotFoundException, InterruptedException {
bajt [] scrByte = getScreenShotBytes (sterownik);
browser = getBrowserAndVersion ();
String scenarioName = getScenName ();
String imageName = scenarioName + ”” + przeglądarka + ””
+ System.currentTimeMillis () + „.png”;
Plik scrFile = getScreenShotFile (sterownik);
String screenWidthHeight = getImageWidthHeight (scrFile);
// jeśli chcesz zapisać zrzut ekranu w systemie lokalnym, włącz linię poniżej
// FileUtils.copyFile (scrFile, nowy plik („C: // zrzut ekranu //” + imageName));
insertImageDB (scrByte, scenarioName, imageName, screenWidthHeight,
przeglądarka);
Thread.sleep (1000);
}
public static String getImageWidthHeight (File imageFile) zgłasza IOException {
BufferedImage bimg = ImageIO.read (imageFile);
int imageWidth = bimg.getWidth ();
int imageHeight = bimg.getHeight ();
if (imageWidth! = 0) {
return imageWidth + „x” + imageHeight;
} else {
zwróć „FullScreenx” + imageHeight;
}
}
publiczny statyczny plik getScreenShotFile (sterownik WebDriver) {
// WebDriver driverA = nowy Augmenter (). Augment (sterownik);
powrót (sterownik (TakesScreenshot)) .getScreenshotAs (OutputType.FILE);
}
publiczny statyczny bajt [] getScreenShotBytes (sterownik WebDriver) {
powrót (sterownik (TakesScreenshot)) .getScreenshotAs (OutputType.BYTES);
}
public static void insertImageDB (bajt [] imageByte, String scenName,
String imageName, String screenWidthHeight, przeglądarka String)
rzuca ClassNotFoundException {
Właściwości dbProp = new Properties ();
InputStream dbPropInput = null;
ResultSet rs = null;
PreparedStatement ps = null;
Połączenie con = null;
// setImageSeqNo (getImageSeqNo () + 1);
int seqNo = getImageSeqNo ();
System.out.println (scenName + ”—-” + przeglądarka + ”—-”
+ screenWidthHeight + ”- Numer strzału:” + seqNo);
próbować {
String propPath = „src test zasoby podpowiada dbConnect.properties”;
dbPropInput = new FileInputStream (propPath);
dbProp.load (dbPropInput); // załaduj plik właściwości
String 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); // wartość limitu czasu może zostać później wyłączona, obraz
ps.setString (1, „Project”);
ps.setString (2, scenName);
ps.setString (3, przeglądarka);
ps.setString (4, screenWidthHeight);
ps.setTimestamp (5, sqlTimestamp);
ps.setInt (6, seqNo);
ps.setString (7, imageName);
ps.setBytes (8, imageByte);
// komentarz poniżej linii, aby wyłączyć aktualizację bazy danych
ps.executeUpdate ();
} catch (IOException e) {
e.printStackTrace ();
} catch (SQLException e) {
e.printStackTrace ();
} Wreszcie {
próbować {
if (dbPropInput! = null)
dbPropInput.close ();
if (rs! = null)
rs.close ();
if (ps! = null)
ps.close ();
if (con! = null)
con.close ();
} catch (Exception e) {
e.printStackTrace ();
}
}
}
public static String getBrowserAndVersion () {
String browser_version = null;
Możliwości cap = ((RemoteWebDriver) sterownik) .getCapabilities ();
String browsername = cap.getBrowserName ();
// Ten blok, aby znaleźć numer wersji IE
if („Internet Explorer” .equalsIgnoreCase (browsername)) {
String uAgent = (String) ((JavascriptExecutor) sterownik)
.executeScript („return navigator.userAgent;”);
System.out.println (uAgent);
// uAgent return jako „MSIE 8.0 Windows” dla 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 {
// Wersja przeglądarki dla Firefoksa i 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 ((nazwa przeglądarki) + „_” + bVersion);
}
public static String browserNameConvert (String nazwa_wyszukiwarki) {
if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
nazwa_wyszukiwarki, „explorer”)) {
zwróć „IE”;
} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
nazwa_wyszukiwarki, „firefox”)) {
zwróć „FF”;
} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
nazwa_wyszukiwarki, „chrom”)) {
zwróć „CH”;
} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
nazwa_wyszukiwarki, „safari”)) {
powrót „SF”;
} else {
zwróć „NA”;
}
}
}
Plik właściwości połączenia bazy danych MSSQL z poświadczeniami użytkownika i procedurą przechowywania
################## dbConnect.properties ##################
dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbURL = jdbc: sqlserver: // YOURSERVERURL; database = DATABASENAME; user = USERNAME; password = PASSWORD
SPSql = {call STOREPROCEDURE (?, ?, ?, ?, ?, ?, ?, ?)}
Aby zapisać w bazie danych, procedura przechowywania już utworzona w tym przykładzie i wszystkie te dane do połączenia z bazą danych i procedury przechowywania są wymienione w pliku właściwości.
Nazwa przeglądarki konwertuje się na 2 krótkie znaki, takie jak FF (Firefox), CH (Chrome) itp. Jest także w stanie programowo znaleźć wersję przeglądarki zawierającą numer wersji programu Internet Explorer. Ten skrypt obsługuje wersje Internet Explorer 8, 9, 10, 11.