To je, da Screenshot z uporabo Selenium Webdriver in shraniti v MS SQL Database. Slika se shrani v podatkovni zbirki z imenom slike, ki je dodano ime brskalnika, različica brskalnika, zaporedna številka in ime scenarija. Ta koda podpira Chrome, Firefox, Internet Explorer in Safari.
Med vrstico 63-70 je na voljo še ena možnost, da sliko shranite v lokalno mapo, če želite. V lokalnem sistemu lahko nastavite mapo in shranite sliko v mapo, ki ste jo podali v formatu png, in obliko bajtov v podatkovni bazi MSSql.
Vzemite Screenshot in shranite na MSSQL Database z uporabo Java in Selenium Webriver
paket com.main;
uvoz java.awt.image.BufferedImage;
uvoz java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
uvoz java.sql.Connection;
uvoz java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
uvoz java.sql.SQLException;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
uvoz 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;
javni razred ImageSave {
zasebna statična int imageSeqNo = 0;
zasebno statično String scenName;
zasebni statični brskalnik WebDriverDriver;
zasebna statična int browserWidth;
zasebno statično int browserHeight;
javni statični brskalnik String;
javni statični gonilnik WebDriver;
javni statični int getBrowserWidth () {
vrnitev browserWidth;
}
javni statični int getBrowserHeight () {
vrne brskalnik; višina;
}
javni statični String getScenName () {
vrnitev scenName;
}
javna statična int getImageSeqNo () {
return imageSeqNo;
}
public static void main (String [] args) vrže Exception {
// BrowserDriver.getCurrentDriver ();
}
javni statični void addScreenshot (gonilnik WebDriver) vrže IOException,
ClassNotFoundException, InterruptedException {
byte [] scrByte = getScreenShotBytes (gonilnik);
browser = getBrowserAndVersion ();
String scenarijName = getScenName ();
String imageName = scenarioName + ”” + brskalnik + ””
+ System.currentTimeMillis () + “.png”;
Datoteka scrFile = getScreenShotFile (gonilnik);
Niz screenWidthHeight = getImageWidthHeight (scrFile);
// če želite shraniti sliko posnetka zaslona v lokalnem sistemu, omogočite spodnjo vrstico
// FileUtils.copyFile (scrFile, nova datoteka (“C: // screenshot //” + imageName));
insertImageDB (scrByte, scenarioName, imageName, screenWidthHeight,
brskalnik);
Thread.sleep (1000);
}
public static String getImageWidthHeight (Datoteka FileFile) vrže IOException {
BufferedImage bimg = ImageIO.read (imageFile);
int imageWidth = bimg.getWidth ();
int imageHeight = bimg.getHeight ();
if (imageWidth! = 0) {
return imageWidth + “x” + imageHeight;
} else {
vrnite »FullScreenx« + imageHeight;
}
}
javna statična datoteka getScreenShotFile (gonilnik WebDriver) {
// gonilnik WebDriver = novi Augmenter (). Augment (driver);
return ((TakesScreenshot) gonilnik) .getScreenshotAs (OutputType.FILE);
}
javni statični bajt [] getScreenShotBytes (gonilnik WebDriver) {
return ((TakesScreenshot) gonilnik) .getScreenshotAs (OutputType.BYTES);
}
javna statična void insertImageDB (bajt [] imageByte, niz scenName,
String imageName, String screenWidthHeight, String browser)
metov ClassNotFoundException {
Lastnosti dbProp = new Properties ();
InputStream dbPropInput = null;
ResultSet rs = null;
PreparedStatement ps = null;
Povezava con = null;
// setImageSeqNo (getImageSeqNo () + 1);
int seqNo = getImageSeqNo ();
System.out.println (scenName + ”—-“ + brskalnik + ”—-“)
+ screenWidthHeight + ”—– Število posnetkov:“ + seqNo);
poskusi {
String propPath = “. \ T
dbPropInput = novo FileInputStream (propPath);
dbProp.load (dbPropInput); // naloži datoteko lastnosti
Niz dbDriver = (dbProp.getProperty (“dbDriver”));
Niz dbURL = (dbProp.getProperty (“dbURL”));
Niz 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 = novo java.sql.Timestamp (date.getTime ());
System.out.println (“Image Timestamp =” + sqlTimestamp);
ps.setEscapeProcessing (true);
ps.setQueryTimeout (90); // vrednost zakasnitve lahko kasneje onemogočite, slika
ps.setString (1, “Projekt”);
ps.setString (2, scenName);
ps.setString (3, brskalnik);
ps.setString (4, screenWidthHeight);
ps.setTimestamp (5, sqlTimestamp);
ps.setInt (6, seqNo);
ps.setString (7, imageName);
ps.setBytes (8, imageByte);
// komentar pod vrstico, da onemogočite posodabljanje baze podatkov
ps.executeUpdate ();
} catch (IOException e) {
e.printStackTrace ();
} catch (SQLException e) {
e.printStackTrace ();
} končno {
poskusi {
if (dbPropInput! = null)
dbPropInput.close ();
če (rs! = null)
rs.close ();
če (ps! = null)
ps.close ();
če (con! = null)
con.close ();
} catch (Exception e) {
e.printStackTrace ();
}
}
}
javni statični String getBrowserAndVersion () {
String browser_version = null;
Capabilities cap = ((RemoteWebDriver) gonilnik) .getCapabilities ();
Vrstica brskalnika = cap.getBrowserName ();
// Ta blok za ugotavljanje številke različice IE
if ("internetni raziskovalec" .equalsIgnoreCase (brskalnikovo ime)) {
String uAgent = (String) (gonilnik Javascript)
.executeScript (“return navigator.userAgent;”);
System.out.println (uAgent);
// uAgent vrne kot "MSIE 8.0 Windows" za IE8
če (uAgent.contains (“MSIE”) && uAgent.contains (“Windows”)) {
browser_version = uAgent.substring (uAgent.indexOf (“MSIE”) + 5,
uAgent.indexOf (“Windows”) - 2);
} tudi če (uAgent.contains (“Trident / 7.0”)) {
browser_version = “11.0”;
} else {
browser_version = “00”;
}
} else {
// Različica brskalnika za Firefox in Chrome
browser_version = cap.getVersion (); // .split (“.”) [0];
}
String browserversion = browser_version.substring (0,
browser_version.indexOf (“.”));
Niz bVersion = String.format (“% 02d”, Integer.parseInt (browserversion));
vrnitev ((uporabniško ime brskalnika) + „_“ + bVersion);
}
javni statični String browserNameConvert (String browser_name) {
if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, “explorer”)) {
vrnite „IE“;
} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, “firefox”)) {
vrne “FF”;
} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, “chrome”)) {
vrnitev "CH";
} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, “safari”)) {
vrnitev »SF«;
} else {
vrnitev »NA«;
}
}
}
Datoteka z MSSQL povezavo baze podatkov z uporabniškimi poverilnicami in postopkom shranjevanja
################## dbConnect.properties ##################
dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbURL = jdbc: sqlserver: // YOURSERVERURL; database = DATABASENAME; uporabnik = USERNAME; geslo = Geslo
SPSql = {pokličite STOREPROCEDURE (?, ?, ?, ?, ?, ?, ?, ?)?
Če želite shraniti v bazo podatkov, je postopek shranjevanja že ustvarjen v tem primeru in vsi ti podatki za povezavo baze podatkov in postopek shranjevanja so navedeni v datoteki lastnosti.
Ime brskalnika se pretvori v 2 kratke kratke obrazce, kot so FF (Firefox), CH (Chrome) itd. To je tudi zmožno iskati različico brskalnika, ki je programsko vključena, vključno s številko različice Internet Explorerja. Ta skript podpira različice Internet Explorerja 8, 9, 10, 11.