Ini untuk mengambil Screenshot menggunakan Selenium Webdriver dan untuk menyimpan dalam MS SQL Database. Gambar disimpan dalam database dengan nama gambar ditambahkan dengan nama browser, versi browser, nomor urut dan nama skenario. Kode ini didukung Chrome, Firefox, Internet Explorer, dan Safari.
Ada satu opsi lagi di antara baris 63-70 untuk menyimpan gambar ke folder lokal jika Anda mau. Anda dapat mengatur folder di sistem lokal dan itu akan menyimpan gambar ke folder yang Anda tentukan dalam format png dan format byte di Database MSSql.
Ambil Screenshot dan simpan ke Database MSSQL menggunakan Java dan Selenium Webriver
paket com.main;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
impor java.io.IOException;
impor java.io.InputStream;
impor java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
impor java.sql.SQLException;
impor java.util.Properties;
import java.util.concurrent.TimeUnit;
impor javax.imageio.ImageIO;
impor org.openqa.selenium.Kapasitas;
import org.openqa.selenium.JavascriptExecutor;
impor org.openqa.selenium.OutputType;
impor org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
ImageSave kelas publik {
private static int imageSeqNo = 0;
scenName String statis pribadi;
browser WebDriver statis pribadi;
private static int browserWidth;
browser pribadi int statisTinggi;
browser String statis publik;
driver WebDriver statis publik;
public static int getBrowserWidth () {
kembali browserWidth;
}
public static int getBrowserHeight () {
kembali browserTinggi;
}
public static String getScenName () {
mengembalikan scenName;
}
public int intImageSeqNo () {)
kembalikan imageSeqTidak;
}
public static void main (String [] args) melempar Exception {
// BrowserDriver.getCurrentDriver ();
}
public static void addScreenshot (driver WebDriver) melempar IOException,
ClassNotFoundException, InterruptedException {
byte [] scrByte = getScreenShotBytes (driver);
browser = getBrowserAndVersion ();
String scenarioName = getScenName ();
String imageName = scenarioName + ”” + browser + ””
+ System.currentTimeMillis () + ".png";
File scrFile = getScreenShotFile (driver);
String screenWidthHeight = getImageWidthHeight (scrFile);
// jika ingin menyimpan gambar tangkapan layar di sistem lokal, aktifkan baris di bawah
// FileUtils.copyFile (scrFile, File baru (“C: // tangkapan layar //” + imageName));
insertImageDB (scrByte, scenarioName, imageName, screenWidthHeight,
browser);
Thread.sleep (1000);
}
public static String getImageWidthHeight (File imageFile) melempar IOException {
BufferedImage bimg = ImageIO.read (imageFile);
int imageWidth = bimg.getWidth ();
int imageHeight = bimg.getHeight ();
if (imageWidth! = 0) {
return imageLebar + “x” + imageTinggi;
} lain {
kembalikan "FullScreenx" + imageHeight;
}
}
File public static getScreenShotFile (driver WebDriver) {
// WebDriver driverA = Augmenter baru (). Augment (driver);
return ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE);
}
byte statis publik [] getScreenShotBytes (driver WebDriver) {
return ((TakesScreenshot) driver) .getScreenshotAs (OutputType.BYTES);
}
public static void insertImageDB (byte [] imageByte, String scenName,
String imageName, String screenWidthHeight, String browser)
melempar ClassNotFoundException {
Properti dbProp = Properti baru ();
InputStream dbPropInput = null;
ResultSet rs = null;
PreparedStatement ps = null;
Koneksi con = nol;
// setImageSeqNo (getImageSeqNo () + 1);
int seqNo = getImageSeqNo ();
System.out.println (scenName + ”—-” + browser + ”—-”
+ screenWidthHeight + ”—- Nomor Pemotretan:” + seqNo);
coba {
String propPath = “. \ Src \ test \ resources \ props \ dbConnect.properties”;
dbPropInput = FileInputStream (propPath) baru;
dbProp.load (dbPropInput); // muat file properti
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);
tanggal java.util.Date = java.util.Date baru ();
java.sql.Timestamp sqlTimestamp = java.sql.Timestamp baru (date.getTime ());
System.out.println (“Image Timestamp =” + sqlTimestamp);
ps.setEscapeProcessing (true);
ps.setQueryTimeout (90); // nilai batas waktu dapat dinonaktifkan nanti, gambar
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);
// komentar di bawah baris untuk menonaktifkan pembaruan basis data
ps.executeUpdate ();
} catch (IOException e) {
e.printStackTrace ();
} catch (SQLException e) {
e.printStackTrace ();
} akhirnya {
coba {
if (dbPropInput! = null)
dbPropInput.close ();
if (rs! = null)
rs.close ();
jika (ps! = null)
ps.close ();
if (con! = null)
con.close ();
} catch (Exception e) {
e.printStackTrace ();
}
}
}
public static String getBrowserAndVersion () {
String browser_version = null;
Capabilities cap = ((RemoteWebDriver) driver) .getCapabilities ();
String browsername = cap.getBrowserName ();
// Blok ini untuk mengetahui nomor Versi IE
if ("internet explorer" .equalsIgnoreCase (browsername)) {
Pengandar String uAgent = (String) ((JavascriptExecutor))
.executeScript (“return navigator.userAgent;”);
System.out.println (uAgent);
// uAgent kembali sebagai "MSIE 8.0 Windows" untuk IE8
if (uAgent.contains ("MSIE") && uAgent.contains ("Windows")) {
browser_version = uAgent.substring (uAgent.indexOf ("MSIE") + 5,
uAgent.indexOf ("Windows") - 2);
} lain jika (uAgent.contains ("Trident / 7.0")) {
browser_version = “11.0”;
} lain {
browser_version = “00”;
}
} lain {
// Versi browser untuk Firefox dan 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 ((nama pengguna) + “_” + bVersion);
}
public String browserNameConvert statis (String browser_name) {
if (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "explorer")) {
kembalikan "IE";
} lain jika (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "firefox")) {
kembalikan "FF";
} lain jika (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "chrome")) {
mengembalikan "CH";
} lain jika (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
browser_name, "safari")) {
mengembalikan "SF";
} lain {
mengembalikan "NA";
}
}
}
File Properti Koneksi Database MSSQL dengan kredensial pengguna dan Prosedur Store
################## dbConnect.properties ##################
dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbURL = jdbc: sqlserver: // YOURSERVERURL; database = DATABASENAME; pengguna = USERNAME; kata sandi = PASSWORD
SPSql = {panggil STOREPROCEDURE (?, ?, ?, ?, ?, ?, ?, ?)}
Untuk menyimpan dalam database, prosedur store sudah dibuat dalam contoh ini dan semua data ini untuk koneksi database dan prosedur store terdaftar di file properti.
Nama peramban yang dikonversi menjadi 2 bentuk pendek char seperti FF (Firefox), CH (Chrome) dll. Ini juga mampu menemukan versi peramban secara terprogram termasuk nomor versi Internet Explorer. Skrip ini mendukung versi Internet Explorer 8, 9, 10, 11.