Cara Ambil Skrin dan Simpan ke Pangkalan Data MSSQL menggunakan Java dan Selenium Webriver



Ini adalah untuk mengambil Tangkapan Skrin menggunakan Selenium Webdriver dan untuk menyimpan dalam Pangkalan Data MS SQL. Imej menyimpan dalam pangkalan data dengan nama imej ditambah dengan nama penyemak imbas, versi penyemak imbas, nombor urutan dan nama senario. Kod ini disokong Chrome, Firefox, Internet Explorer, dan Safari.

Terdapat satu lagi pilihan antara talian 63-70 untuk menyimpan gambar itu ke folder tempatan jika anda mahu. Anda boleh menetapkan folder dalam sistem setempat dan ia akan menyimpan gambar ke dalam folder yang anda tentukan dalam format png dan format byte dalam Pangkalan Data MSSql.

Ambil Skrin dan simpan ke Pangkalan Data MSSQL menggunakan Java dan Selenium Webriver

pakej com.main;

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;

kelas awam ImageSave {

int static static imageSeqNo = 0;

senario String statik swasta;

penyemak imbas WebDriver statik peribadiDriver;

penyemak imbas int statik peribadiWidth;

penyemak imbas int static inte swasta;

pelayar String statik awam;

pemandu WebDriver statik awam;

int statik public getBrowserWidth () {

penyemak imbas kembaliWidth;

}

int static public getBrowserHeight () {

penyemak imbas kembaliHeight;

}

statik statik getScenName () {

kembali scenName;

}

int static public getImageSeqNo () {

kembali imejSeqNo;

}

public static void main (String [] args) melemparkan Pengecualian {

/ / BrowserDriver.getCurrentDriver ();

}

public static void addScreenshot (pemandu WebDriver) membuang IOException,

ClassNotFoundException, InterruptedException {

byte [] scrByte = getScreenShotBytes (driver);

pelayar = getBrowserAndVersion ();

Senario stringsName = getScenName ();

String imageName = scenarioName + "" + browser + ""

+ System.currentTimeMillis () + ".png";

Fail scrFile = getScreenShotFile (pemandu);

String screenWidthHeight = getImageWidthHeight (scrFile);

// jika mahu menyimpan gambar tangkapan skrin dalam sistem tempatan, dayakan garis di bawah

// FileUtils.copyFile (scrFile, File baru ("C: // screenshot //" + imageName));

insertImageDB (scrByte, senarioName, imageName, screenWidthHeight,

pelayar);

Thread.sleep (1000);

}

String statik awam getImageWidthHeight (File imageFile) membuang IOException {

BufferedImage bimg = ImageIO.read (imageFile);

int imageWidth = bimg.getWidth ();

int imageHeight = bimg.getHeight ();

jika (imageWidth! = 0) {

kembali imageWidth + "x" + imageHeight;

} else {

kembali "FullScreenx" + imageHeight;

}

}

fail statik awam getScreenShotFile (pemandu WebDriver) {

// Pemandu WebDriverA = Augmenter baru (). Tambah (pemandu);

kembali (pemandu TakesScreenshot) .getScreenshotAs (OutputType.FILE);

}

public static byte [] getScreenShotBytes (pemandu WebDriver) {

kembali (pemandu TakesScreenshot) .getScreenshotAs (OutputType.BYTES);

}

public static void insertImageDB (byte [] imageByte, String sceneName,

String imageName, String screenWidthHeight, pelayar String)

melemparkan ClassNotFoundException {

Properties dbProp = Properties baru ();

InputStream dbPropInput = null;

ResultSet rs = null;

PreparedStatement ps = null;

Sambungan con = null;

// setImageSeqNo (getImageSeqNo () + 1);

int seqNo = getImageSeqNo ();

System.out.println (scenName + "-" + browser + "-"

+ screenWidthHeight + "- Nombor Shot:" + seqNo);

cuba {

String propPath = ". \ Src \ test \ resources \ props \ dbConnect.properties";

dbPropInput = FileInputStream baru (propPath);

dbProp.load (dbPropInput); // fail harta tanah beban

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); / / Nilai masa mungkin melumpuhkan kemudian, gambar

ps.setString (1, "Projek");

ps.setString (2, scenName);

ps.setString (3, penyemak imbas);

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 menyahdayakan pangkalan data pengemaskinian

ps.executeUpdate ();

} tangkapan (IOException e) {

e.printStackTrace ();

} tangkapan (SQLException e) {

e.printStackTrace ();

} akhirnya {

cuba {

jika (dbPropInput! = null)

dbPropInput.close ();

jika (rs! = null)

rs.close ();

jika (ps! = null)

ps.close ();

jika (con! = null)

con.close ();

} menangkap (Pengecualian e) {

e.printStackTrace ();

}

}

}

String statik awam getBrowserAndVersion () {

Pelayar String_version = null;

Kemampuan cap = ((RemoteWebDriver) pemandu) .getCapabilities ();

Browsername = cap.getBrowserName ();

/ / Blok ini untuk mengetahui nombor Versi IE

jika ("internet explorer" .equalsIgnoreCase (browsername)) {

String uAgent = (String) ((JavascriptExecutor) pemandu)

.executeScript ("return navigator.userAgent;");

System.out.println (uAgent);

// uAgent pulangan sebagai "MSIE 8.0 Windows" untuk IE8

jika (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";

} else {

browser_version = "00";

}

} else {

/ // Versi pelayar untuk Firefox dan Chrome

browser_version = cap.getVersion (); // .split (".") [0];

}

Rintangan gambarajah tali = browser_version.substring (0,

browser_version.indexOf ("."));

String bVersion = String.format ("% 02d", Integer.parseInt (browserversion));

kembali ((browsername) + "_" + bVersion);

}

pelayar String statik awamNameConvert (String browser_name) {

jika (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name, "explorer")) {

kembali "IE";

} lain jika (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name, "firefox")) {

kembali "FF";

} lain jika (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name, "chrome")) {

kembali "CH";

} lain jika (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name, "safari")) {

kembali "SF";

} else {

kembali "NA";

}

}

}

MSSQL Sambungan Pangkalan Data Fail hartanah dengan bukti kelayakan pengguna dan Prosedur Store

################## dbConnect.properties ##################

dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver

dbURL = jdbc: sqlserver: // YOURSERVERURL; database = DATABASENAME; user = USERNAME; password = PASSWORD

SPSql = {panggilan STOREPROCEDURE (?, ?, ?, ?, ?, ?, ?, )}}

Untuk menyimpan dalam pangkalan data, prosedur kedai sudah dibuat dalam contoh ini dan semua data ini untuk sambungan pangkalan data dan prosedur penyimpanan disenaraikan dalam fail harta benda.

Nama pelayarnya ditukar kepada 2 bentuk pendek seperti FF (Firefox), CH (Chrome) dan lain-lain. Ini juga mampu mencari versi pelayar pemrograman termasuk nombor versi Internet Explorer. Skrip ini menyokong versi Internet Explorer 8, 9, 10, 11.

Artikel Sebelumnya

12 Aplikasi Terbaik untuk Merakam Memo Suara iOS ke dalam Dropbox (Pemacu Awan)

12 Aplikasi Terbaik untuk Merakam Memo Suara iOS ke dalam Dropbox (Pemacu Awan)

Terdapat aplikasi rakaman suara, yang mampu menghantar memo suara secara automatik ke pemacu awan sebaik sahaja anda menghentikan rakaman. Ini mudah dan mudah apabila anda bergantung pada memo suara anda di sekolah atau kerja anda. Anda hanya perlu akaun Dropbox sebagai tambahan kepada peranti iOS anda untuk menyelesaikannya semasa anda menggunakan aplikasi ini...

Artikel Seterusnya

12 Saluran Filem Percuma Roku Terbaik 2018

12 Saluran Filem Percuma Roku Terbaik 2018

Terdapat banyak saluran filem yang tersedia untuk peranti Roku. Walaupun mereka adalah saluran filem percuma untuk Roku, kebanyakan mereka mungkin tidak memberikan kualiti video yang anda harapkan. Dengan saluran filem percuma untuk Roku, anda boleh menonton filem domain awam lama, filem asing seperti filem Korea dan Jepun dan barat lama...