Dit is om een screenshot te maken met Selenium Webdriver en op te slaan in MS SQL Database. De afbeelding wordt opgeslagen in de database met de afbeeldingsnaam toegevoegd met de browsernaam, browserversie, volgnummer en scenariodenaam. Deze code wordt ondersteund door Chrome, Firefox, Internet Explorer en Safari.
Er is nog een optie tussen regel 63-70 om de afbeelding op te slaan in een lokale map als u dat wilt. U kunt een map instellen in het lokale systeem en het zal de afbeelding opslaan in de map die u hebt opgegeven in png-indeling en byte-indeling in MSSQL Database.
Neem Screenshot en sla op naar MSSQL Database met behulp van Java en Selenium Webriver
pakket com.main;
importeer java.awt.image.BufferedImage;
importeer java.io.File;
importeer java.io.FileInputStream;
importeer java.io.IOException;
import java.io.InputStream;
importeer java.sql.Connection;
importeer java.sql.DriverManager;
importeer java.sql.PreparedStatement;
importeer java.sql.ResultSet;
importeer java.sql.SQLException;
import java.util.Properties;
importeer java.util.concurrent.TimeUnit;
importeer 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 {
private static int imageSeqNo = 0;
private static String scenName;
privé statische WebDriver-browserDriver;
private static int browserWidth;
privé statisch int browserHeight;
openbare statische String-browser;
openbaar statisch WebDriver-stuurprogramma;
public static int getBrowserWidth () {
terug browserWidth;
}
public static int getBrowserHeight () {
return browserHeight;
}
public static String getscenName () {
return scenName;
}
public static int getImageSeqNo () {
return imageSeqNo;
}
public static void main (String [] args) gooit Exception {
// BrowserDriver.getCurrentDriver ();
}
public static void addScreenshot (WebDriver-stuurprogramma) gooit IOException,
ClassNotFoundException, InterruptedException {
byte [] scrByte = getScreenShotBytes (stuurprogramma);
browser = getBrowserAndVersion ();
String scenariolaam = getScenName ();
String imageName = scenarioNaam + "" + browser + ""
+ System.currentTimeMillis () + ".png";
Bestand scrFile = getScreenShotFile (stuurprogramma);
String screenWidthHeight = getImageWidthHeight (scrFile);
// als u een screenshot wilt opslaan in een lokaal systeem, schakelt u de onderstaande regel in
// FileUtils.copyFile (scrFile, nieuw bestand ("C: // screenshot //" + imageName));
insertImageDB (scrByte, scenariodenaam, imageName, screenWidthHeight,
browser);
Thread (1000);
}
public static String getImageWidthHeight (File imageFile) gooit IOException {
BufferedImage bimg = ImageIO.read (imageFile);
int imageWidth = bimg.getWidth ();
int imageHeight = bimg.getHeight ();
if (imageWidth! = 0) {
return imageWidth + "x" + imageHeight;
} else {
geef "FullScreenx" + imageHeight terug;
}
}
openbaar statisch bestand getScreenShotFile (WebDriver-stuurprogramma) {
// WebDriver-stuurprogrammaA = nieuwe Augmenter (). Augment (stuurprogramma);
return ((TakesScreenshot) -stuurprogramma) .getScreenshotAs (OutputType.FILE);
}
public static byte [] getScreenShotBytes (WebDriver-stuurprogramma) {
return ((TakesScreenshot) -stuurprogramma) .getScreenshotAs (OutputType.BYTES);
}
public static void insertImageDB (byte [] imageByte, String scenName,
String imageName, String screenWidthHeight, String-browser)
genereert ClassNotFoundException {
Eigenschappen dbProp = nieuwe eigenschappen ();
InputStream dbPropInput = null;
ResultSet rs = null;
PreparedStatement ps = null;
Verbinding con = nul;
// setImageSeqNo (getImageSeqNo () + 1);
int seqNo = getImageSeqNo ();
System.out.println (scenName + "-" + browser + "-"
+ screenWidthHeight + "- Shot Number:" + seqNo);
proberen {
String propPath = ". \ Src \ test \ resources \ props \ dbConnect.properties";
dbPropInput = nieuwe FileInputStream (propPath);
dbProp.load (dbPropInput); // bestand met laadeigenschappen
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 ("Afbeelding timestamp =" + sqlTimestamp);
ps.setEscapeProcessing (true);
ps.setQueryTimeout (90); // time-outwaarde kan later worden uitgeschakeld, afbeelding
ps.setString (1, "Project");
ps.setString (2, scenName);
ps.setString (3, browser);
ps.setString (4, screenWidthHeight);
ps.setTimestamp (5, sqlTimestamp);
ps.setInt (6, seqNo);
ps.setString (7, imageName);
ps.setBytes (8, imageByte);
// commentaar onder de regel om bijwerken van de database uit te schakelen
ps.executeUpdate ();
} catch (IOException e) {
e.printStackTrace ();
} catch (SQLException e) {
e.printStackTrace ();
} Tenslotte {
proberen {
if (dbPropInput! = null)
dbPropInput.close ();
if (rs! = null)
rs.close ();
if (ps! = null)
ps.close ();
if (con! = null)
con.close ();
} catch (Uitzondering e) {
e.printStackTrace ();
}
}
}
public static String getBrowserAndVersion () {
String browser_version = null;
Capabilities cap = ((RemoteWebDriver) -stuurprogramma) .getCapabilities ();
String browsername = cap.getBrowserName ();
// Dit blok om IE-versienummer te achterhalen
if ("internet explorer" .equalsIgnoreCase (browsername)) {
String uAgent = (String) ((JavascriptExecutor) -stuurprogramma)
.executeScript ("return navigator.userAgent;");
System.out.println (uAgent);
// uAgent geretourneerd als "MSIE 8.0 Windows" voor 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 {
// Browserversie voor Firefox en 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 ((browsernaam) + "_" + bVersion);
}
public static String browserNameConvert (String browser_name) {
if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "explorer")) {
return "IE";
} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "firefox")) {
return "FF";
} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "chrome")) {
return "CH";
} else if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "safari")) {
return "SF";
} else {
return "NA";
}
}
}
MSSQL Database Connection Property-bestand met gebruikersreferenties en opslagprocedure
################## dbConnect.properties ##################
dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbURL = jdbc: sqlserver: // YOURSERVERURL; databank = databasename; user = USERNAME; password = wachtwoord
SPSql = {call STOREPROCEDURE (?, ?, ?, ?, ?, ?, ?, ?)}
Om in de database op te slaan, wordt de opslagprocedure die al in dit voorbeeld is gemaakt en al deze gegevens voor databaseverbinding en opslagprocedure in het eigenschappenbestand vermeld.
De browsernaam die converteert naar 2 verkorte verkorte formulieren zoals FF (Firefox), CH (Chrome) enz. Dit is ook in staat om browserversies programmatisch te vinden, inclusief het versienummer van Internet Explorer. Dit script ondersteunt Internet Explorer-versies 8, 9, 10, 11.