วิธีการจับภาพหน้าจอและบันทึกลงในฐานข้อมูล MSSQL โดยใช้ Java และ Selenium Webriver



นี่คือการถ่ายภาพหน้าจอโดยใช้ 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

บทความก่อนหน้านี้

จะลบกิจกรรมโทรศัพท์ Android & ปิดการใช้งานประวัติ Google Voice ได้อย่างไร

จะลบกิจกรรมโทรศัพท์ Android & ปิดการใช้งานประวัติ Google Voice ได้อย่างไร

อย่างที่เราทุกคนรู้กันดีว่าเป็นระบบปฏิบัติการมือถือโอเพ่นซอร์สที่ Google เป็นเจ้าของและพัฒนา เหตุผลที่ Google ซื้อระบบปฏิบัติการมาตั้งแต่แรกคือเพื่อให้คนส่วนใหญ่ทั่วโลกใช้เครื่องมือค้นหาและผลิตภัณฑ์อื่น ๆ อีกมากมายที่ Google มีให้ แม้ว่าบริการส่วนใหญ่ของ Google จะให้บริการฟรี แต่ Google ก็ทำเงินได้มากมายในรูปแบบอื่น หนึ่งในนั้นเกี่ยวข้องกับการ รวบรวมข้อมูลผู้ใช้ และใช้เพื่อแสดงโฆษณาในแบบของคุณ Google เก็บรวบรวมข้อมูลอะไรและอย่างไร แม้ว่าส่วนใหญ่ของการรวบรวมข้อมูลผู้ใช้นี้จะไม่เป็นอันตราย แต่ก็ เป็นการละเมิดความเป็นส่วนตัวของผู้ใช้ อย่างสมบูรณ์หลังจากเวลาผ่านไปสักครู่ ตัวอย่างเช่น Google จะบันทึ...

บทความถัดไป

สุดยอดแอพ Android Emoji เพื่อแสดงอารมณ์ของคุณ

สุดยอดแอพ Android Emoji เพื่อแสดงอารมณ์ของคุณ

Facebook พูดเบาและรวดเร็ว Pinterest WhatsApp โทรเลข Emojis นั้นยอดเยี่ยมทำงานด้วยความสามัคคีอย่างเต็มที่และสะดวกสบายในการสื่อสารความรู้สึกของเราในภาษาใด ๆ โดยไม่ต้องพิมพ์คำใด ๆ คุณสามารถพูดได้มากขึ้นโดยใช้แอพอีโมจิที่ดีที่สุดของ Android มากกว่าการพิมพ์ประโยคทั้งหมด มีแอพอิโมจิ Android มากมายจาก Google Play Store แอพเหล่านี้นำรูปแบบอิโมจิที่น่าตื่นตาตื่นใจที่สุดมาใช้เป็นพจนานุกรมอิโมจิที่กว้างขวาง ลองใช้แอพ Emoji ที่ดีที่สุดเหล่านี้บน Android และแสดงความรู้สึกของเราในวิธีที่ดีที่สุดขณะสนทนากับเพื่อนและครอบครัวของคุณ Bitmoji Bitmoji เป็นหนึ่งในแอพอีโมจิที่ดีที่สุดสำหรับผู้ใช้ Android แอพอีโมจิ An...