นี่คือการถ่ายภาพหน้าจอโดยใช้ Selenium Webdriver และเพื่อบันทึกในฐานข้อมูล MS SQL รูปภาพกำลังบันทึกในฐานข้อมูลด้วยชื่อรูปภาพต่อท้ายด้วยชื่อเบราว์เซอร์เวอร์ชันเบราว์เซอร์หมายเลขลำดับและชื่อสถานการณ์ รหัสนี้รองรับ Chrome, Firefox, Internet Explorer และ Safari
มีอีกหนึ่งตัวเลือกระหว่างบรรทัด 63-70 เพื่อบันทึกรูปภาพลงในโฟลเดอร์ภายในเครื่องหากคุณต้องการ คุณสามารถตั้งค่าโฟลเดอร์ในระบบท้องถิ่นและมันจะบันทึกภาพลงในโฟลเดอร์ที่คุณระบุในรูปแบบ png และรูปแบบไบต์ในฐานข้อมูล MSSql
ถ่ายภาพหน้าจอและบันทึกลงในฐานข้อมูล MSSQL โดยใช้ Java และ Selenium Webriver
แพคเกจ com.main;
นำเข้า java.awt.image.BufferedImage;
นำเข้า java.io.File;
นำเข้า java.io.FileInputStream;
นำเข้า java.io.IOException;
นำเข้า java.io.InputStream;
นำเข้า java.sql.Connection;
นำเข้า java.sql.DriverManager;
นำเข้า java.sql.PreparedStatement;
นำเข้า java.sql.ResultSet;
นำเข้า java.sql.SQLException;
นำเข้า java.util.Properties;
นำเข้า java.util.concurrent.TimeUnit;
นำเข้า javax.imageio.ImageIO;
นำเข้า org.openqa.selenium.Capabilities;
นำเข้า org.openqa.selenium.JavascriptExecutor;
นำเข้า org.openqa.selenium.OutputType;
นำเข้า org.openqa.selenium.TakesSc Screenshot;
นำเข้า org.openqa.selenium.WebDriver;
นำเข้า org.openqa.selenium.remote.RemoteWebDriver;
ImageSave ระดับสาธารณะ
อิมเมจคงที่ส่วนตัว imageSeqNo = 0;
String คงที่ ScenName ส่วนตัว;
WebDriver ส่วนตัวคงที่ browserDriver;
เบราว์เซอร์ int คงที่ส่วนตัวความกว้าง;
เบราว์เซอร์ int คงที่ส่วนตัวความสูง;
เบราว์เซอร์ String คงที่สาธารณะ
ไดรเวอร์ WebDriver สาธารณะ
getBrowserWidth int คงที่สาธารณะ () {
ส่งคืนเบราว์เซอร์กว้าง;
}
getBrowserHeight int คงที่สาธารณะ () {
กลับเบราว์เซอร์ความสูง;
}
String สาธารณะคงที่ getScenName () {
ส่งคืน scenName;
}
สาธารณะคงที่ int getImageSeqNo () {
ส่งคืน imageSeqNo;
}
โมฆะคงที่สาธารณะหลัก (String [] args) พ่นข้อยกเว้น {
// BrowserDriver.getCurrentDriver ();
}
โมฆะสาธารณะแบบคงที่เพิ่มหน้าจอ (ไดรเวอร์ WebDriver) พ่น IOException,
ClassNotFoundException, InterruptedException {
ไบต์ [] scrByte = getScreenShotBytes (ไดรเวอร์);
เบราว์เซอร์ = getBrowserAndVersion ();
String สถานการณ์ชื่อ = getScenName ();
String imageName = สถานการณ์ชื่อ +”” + เบราว์เซอร์ +””
+ System.currentTimeMillis () +“ .png”;
ไฟล์ scrFile = getScreenShotFile (ไดรเวอร์);
String screenWidthHeight = getImageWidthHeight (scrFile);
// หากต้องการบันทึกภาพหน้าจอในระบบภายในให้เปิดใช้งานบรรทัดด้านล่าง
// FileUtils.copyFile (scrFile, ไฟล์ใหม่ (“ C: // ภาพหน้าจอ //” + imageName));
insertImageDB (scrByte, ชื่อสถานการณ์, ชื่อภาพ, หน้าจอกว้างความสูง,
เบราว์เซอร์);
Thread.sleep (1000)
}
String คงที่สาธารณะ getImageWidthHeight (ไฟล์อิมเมจไฟล์) โยน IOException {
BufferedImage bimg = ImageIO.read (imageFile);
int imageWidth = bimg.getWidth ();
int imageHeight = bimg.getHeight ();
if (imageWidth! = 0) {
คืน imageWidth +“ x” + imageHeight;
} อื่น {
คืน“ FullScreenx” + imageHeight;
}
}
ไฟล์คงที่สาธารณะ getScreenShotFile (ไดรเวอร์ WebDriver) {
// WebDriver driverA = new Augmenter (). augment (driver);
ไดร์เวอร์ return ((TakesSc4.0)) .getSc ScreenshotAs (OutputType.FILE);
}
ไบต์คงที่สาธารณะ [] getScreenShotBytes (ไดรเวอร์ WebDriver) {
ไดร์เวอร์ return ((TakesSc4.0)) .getSc ScreenshotAs (OutputType.BYTES);
}
โมฆะสาธารณะคงที่ insertImageDB (byte [] imageByte, String scenNameName,
สตริงอิมเมจชื่อ, หน้าจอสตริงความกว้างความสูง, เบราว์เซอร์สตริง)
พ่น ClassNotFoundException {
คุณสมบัติ dbProp = คุณสมบัติใหม่ ();
InputStream dbPropInput = null;
ResultSet rs = null;
PreparedStatement ps = null;
การเชื่อมต่อ = null;
// setImageSeqNo (getImageSeqNo () + 1);
int seqNo = getImageSeqNo ();
System.out.println (scenName +” —-” + เบราว์เซอร์ +” —-”
+ screenWidthHeight +” —- หมายเลข shot:” + seqNo);
ลอง {
String propPath =“. \ src \ test \ resources \ props \ dbConnect.properties”;
dbPropInput = new FileInputStream (propPath);
dbProp.load (dbPropInput); // โหลดไฟล์คุณสมบัติ
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 = ใหม่ java.sql.Timestamp (date.getTime ());
System.out.println (“ การประทับเวลาของภาพ =” + sqlTimestamp);
ps.setEscapeProcessing (จริง);
ps.setQueryTimeout (90); // ค่าการหมดเวลาอาจปิดใช้งานในภายหลังรูปภาพ
ps.setString (1, “ Project”);
ps.setString (2, scenName);
ps.setString (3 เบราว์เซอร์);
ps.setString (4, หน้าจอกว้างความสูง);
ps.setTimestamp (5, sqlTimestamp);
ps.setInt (6, seqNo);
ps.setString (7, imageName);
ps.setBytes (8, imageByte);
// ความคิดเห็นด้านล่างบรรทัดเพื่อปิดการใช้งานการปรับปรุงฐานข้อมูล
ps.executeUpdate ();
} catch (IOException e) {
e.printStackTrace ();
} catch (SQLException e) {
e.printStackTrace ();
} ในที่สุด {
ลอง {
if (dbPropInput! = null)
dbPropInput.close ();
if (rs! = null)
rs.Close ();
if (ps! = null)
ps.close ();
if (con! = null)
con.close ();
} catch (ข้อยกเว้น e) {
e.printStackTrace ();
}
}
}
ประชาชนคงที่สตริง getBrowserAndVersion () {
String browser_version = null;
ขีดความสามารถ cap = (ไดรเวอร์ (RemoteWebDriver)) .getCapabilities ();
String browsername = cap.getBrowserName ();
// บล็อกนี้เพื่อค้นหาหมายเลขเวอร์ชัน IE
if (“ internet explorer” .equalsIgnoreCase (ชื่อเรียกดู)) {
String uAgent = (String) (ไดรเวอร์ (JavascriptExecutor))
.executeScript (“ navigator.userAgent;”);
System.out.println (uAgent);
// uAgent ส่งคืนเป็น“ MSIE 8.0 Windows” สำหรับ IE8
if (uAgent.contain (“ MSIE”) && uAgent.contain (“ Windows”)) {
browser_version = uAgent.substring (uAgent.indexOf (“ MSIE”) + 5,
uAgent.indexOf (“ Windows”) - 2);
} อื่น ๆ ถ้า (uAgent.contain (“ ตรีศูล / 7.0”)) {
browser_version =“ 11.0”;
} อื่น {
browser_version =“ 00”;
}
} อื่น {
// เวอร์ชันของเบราว์เซอร์สำหรับ Firefox และ 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 ((ชื่อเรียกดู) +“ _” + bVersion);
}
ประชาชนคงสตริงเบราว์เซอร์ชื่อแปลง (สตริงเบราว์เซอร์ _ ชื่อ) {
if (org.apache.commons.lang3.StringUtils.containIgnoreCase (
browser_name, “ explorer”)) {
ส่งคืน“ IE”;
} ถ้าอื่น ๆ (org.apache.commons.lang3.StringUtils.containIgnoreCase (
browser_name, “ firefox”)) {
ส่งคืน“ FF”;
} ถ้าอื่น ๆ (org.apache.commons.lang3.StringUtils.containIgnoreCase (
browser_name, “ chrome”)) {
ส่งคืน“ CH”;
} ถ้าอื่น ๆ (org.apache.commons.lang3.StringUtils.containIgnoreCase (
browser_name, “ safari”)) {
ส่งคืน“ SF”;
} อื่น {
กลับ“ NA”;
}
}
}
ไฟล์คุณสมบัติการเชื่อมต่อฐานข้อมูล MSSQL พร้อมข้อมูลรับรองผู้ใช้และขั้นตอนการจัดเก็บ
################## dbConnect.properties ##################
DbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver
DbUrl = JDBC: sqlserver: // YOURSERVERURL; ฐานข้อมูล = DatabaseName; ใช้ USERNAME =; = รหัสผ่านรหัสผ่าน
SPSql = {เรียก STOREPROCEDURE (?, ?, ?, ?, ?, ?, ?, ?)}
ในการบันทึกในฐานข้อมูลขั้นตอนการจัดเก็บที่สร้างไว้แล้วในตัวอย่างนี้และข้อมูลทั้งหมดเหล่านี้สำหรับการเชื่อมต่อฐานข้อมูลและขั้นตอนการจัดเก็บจะแสดงรายการในไฟล์คุณสมบัติ
ชื่อเบราว์เซอร์ที่แปลงเป็นรูปแบบอักขระสั้น 2 แบบเช่น FF (Firefox), CH (Chrome) เป็นต้นนอกจากนี้ยังสามารถค้นหารุ่นเบราว์เซอร์โดยทางโปรแกรมรวมถึงหมายเลขเวอร์ชันของ Internet Explorer สคริปต์นี้รองรับ Internet Explorer เวอร์ชัน 8, 9, 10, 11