Jak zrobić zrzut ekranu i zapisać do bazy danych MSSQL przy użyciu Java i Selenium Webriver



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.

Poprzedni Artykuł

5 Najlepszy motyw Android i niestandardowe aplikacje Icon Pack

5 Najlepszy motyw Android i niestandardowe aplikacje Icon Pack

Możesz dostosować swoje urządzenie z Androidem za pomocą pięknego tła, pakietu ikon i różnych efektów przejścia. W sklepie Google Play jest wiele aplikacji, w których możesz spróbować uzyskać nowy wygląd swojego urządzenia z Androidem. Te aplikacje pakietu personalizacji oferują więcej funkcji i więcej opcji dostosowywania ekranu i aplikacji. Te aplikacje są wy...

Następny Artykuł

Jak udostępnić swoją lokalizację bez adresu lub miasta?

Jak udostępnić swoją lokalizację bez adresu lub miasta?

Istnieje wiele rozwiązań, które już omówiliśmy, aby udostępnić lokalizację podczas podróży lub spotkania. Możesz udostępniać lokalizację bezpośrednio z mapy lub nawet współdzielić lokalizację w czasie rzeczywistym podczas podróży. Omówiliśmy już te rozwiązania, a teraz przedstawimy proste rozwiązanie do udostępniania lokalizacji opracowanej przez Google o nazwie Plus Codes. Zobaczmy, jak korzystać z ...