Cara Mengambil Screenshot dan Menyimpan ke Database MSSQL menggunakan Java dan Selenium Webriver



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.

Artikel Sebelumnya

7 Alat Pemulihan Data Mac Terbaik untuk Mengambil File yang Dihapus

7 Alat Pemulihan Data Mac Terbaik untuk Mengambil File yang Dihapus

Alat pemulihan data Mac adalah penyelamat saat Anda sangat membutuhkan file yang dihapus. Kehilangan data apa pun membuat frustrasi, dan file-file tersebut sering terhapus secara tidak sengaja. Terkadang data sensitif akan hilang selamanya dengan satu klik pada tempat sampah. Bahkan Anda memiliki alat pemulihan data terbaik; yang terbaik adalah mencoba pemulihan file pada hard disk Mac segera setelah Anda kehilangan file sebelum banyak data menimpa terjadi...

Artikel Berikutnya

Bagaimana Cara Menemukan AirPod Anda yang Hilang?

Bagaimana Cara Menemukan AirPod Anda yang Hilang?

Apple AirPod terlalu kecil untuk ditangani, dan bahkan ada perubahan besar Anda akan kehilangan mereka. Meskipun bentuk AirPods mirip dengan tunas EarPods kabel lama, ia dapat masuk ke telinga Anda dengan sempurna seperti earphone nirkabel in-ear lainnya. Namun, ada kemungkinan besar Anda bisa kehilangan mereka saat Anda berolahraga atau berlari dengan mengenakan tunas itu...