كيفية أخذ لقطة للشاشة وحفظها في قاعدة بيانات MSSQL باستخدام Java و Selenium Webriver



هذا هو أخذ لقطة شاشة باستخدام Selenium Webdriver وحفظها في MS SQL Database. يتم حفظ الصورة في قاعدة البيانات مع إلحاق اسم الصورة مع اسم المستعرض وإصدار المستعرض ورقم التسلسل واسم السيناريو. هذا الرمز مدعوم في 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 ؛

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؛

فئة ImageSave العامة

صورة ثابتة خاصة ثابتة = 0 ؛

ثابت اسم سلسلة ثابتة.

ثابت الخاص WebDriver browserDriver.

ثابت الخاص المستعرض كثافة العمليات ؛

ثابت كثافة العمليات الخاصة المستعرض.

ثابت سلسلة مستعرض العامة.

ثابت WebDriver سائق ثابت.

ثابت ثابت العام getBrowserWidth () {

متصفح العودة

}

ثابت ثابت كثافة عامة getBrowserHeight () {

مستعرض الإرتفاع

}

سلسلة ثابتة ثابتة getScenName () {

إرجاع scenName ؛

}

إحصائيات عامة ثابتة getImageSeqNo () {

return imageSeqNo؛

}

ثابت الفراغ الثابت الرئيسي (سلسلة [] الحجج) يلقي استثناء

// BrowserDriver.getCurrentDriver () ؛

}

باطلة ساكنة عامة addScreenshot (سائق WebDriver) يلقي IOException ،

ClassNotFoundException ، InterruptedException {

byte [] scrByte = getScreenShotBytes (برنامج التشغيل) ؛

المستعرض = getBrowserAndVersion () ؛

سلسلة السيناريو = getScenName () ؛

سلسلة imageName = السيناريوName + "" + browser + ""

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

ملف scrFile = getScreenShotFile (برنامج التشغيل) ؛

String screenWidthHeight = getImageWidthHeight (scrFile)؛

// إذا كنت تريد حفظ صورة لقطة الشاشة في النظام المحلي ، فقم بتمكين السطر أدناه

// FileUtils.copyFile (scrFile ، ملف جديد ("C: // screenshot //" + imageName)) ؛

insertImageDB (scrByte ، السيناريوName ، imageName ، screenWidthHeight ،

المتصفح).

Thread.sleep (1000)؛

}

سلسلة getImageWidthHeight الساكنة العامة الثابتة (ملف imageFile) يلقي IOException {

BufferedImage bimg = ImageIO.read (imageFile)؛

int imageWidth = bimg.getWidth ()؛

int imageHeight = bimg.getHeight () ؛

إذا (imageWidth! = 0) {

إرجاع imageWidth + "x" + imageHeight ؛

} آخر {

إرجاع "FullScreenx" + imageHeight ؛

}

}

ملف ثابت عام getScreenShotFile (برنامج تشغيل WebDriver) {

// WebDriver driverA = new Augmenter (). augment (driver)؛

return ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE)؛

}

بايت ثابتة عامة [] getScreenShotBytes (برنامج تشغيل WebDriver) {

return ((TakesScreenshot) driver) .getScreenshotAs (OutputType.BYTES)؛

}

الفراغ الثابت العام insertImageDB (البايت [] imageByte ، سلسلة السيناريو ،

String imageName ، String screenWidthHeight ، String browser)

يلقي ClassNotFoundException {

خصائص dbProp = خصائص جديدة () ؛

InputStream dbPropInput = null؛

ResultSet rs = null؛

PreparedStatement ps = null؛

اتصال يخدع = فارغة.

// setImageSeqNo (getImageSeqNo () + 1) ؛

int seqNo = getImageSeqNo ()؛

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

+ screenWidthHeight + "—- رقم اللقطة:" + seqNo) ؛

محاولة {

السلسلة propPath = ". \ src \ test \ resources \ props \ dbConnect.properties"؛

dbPropInput = جديد FileInputStream (propPath) ؛

dbProp.load (dbPropInput)؛ // تحميل ملف الممتلكات

String dbDriver = (dbProp.getProperty ("dbDriver"))) ؛

السلسلة dbURL = (dbProp.getProperty ("dbURL")) ؛

سلسلة 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 (صحيح)؛

ps.setQueryTimeout (90)؛ // مهلة القيمة قد تعطيل في وقت لاحق ، صورة

ps.setString (1 ، "مشروع") ؛

ps.setString (2 ، scenName) ؛

ps.setString (3 ، متصفح) ؛

ps.setString (4 ، screenWidthHeight) ؛

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 ()؛

} أخيرا {

محاولة {

إذا (dbPropInput! = فارغة)

dbPropInput.close ()؛

إذا (rs! = خالية)

rs.close ()؛

إذا (ps! = خالية)

ps.close ()؛

إذا (con! = null)

con.close ()؛

} catch (استثناء e) {

e.printStackTrace ()؛

}

}

}

سلسلة ثابتة عامة getBrowserAndVersion () {

سلسلة browser_version = خالية.

Capabilities cap = ((RemoteWebDriver) driver) .getCapabilities ()؛

اسم متصفح السلسلة = cap.getBrowserName ()؛

// هذه الكتلة لمعرفة رقم إصدار IE

if ("internet explorer" .equalsIgnoreCase (اسم المتصفح)) {

String uAgent = (String) ((JavascriptExecutor) driver)

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

System.out.println (uAgent)؛

// uAgent يعود كـ "MSIE 8.0 Windows" لـ IE8

إذا كان (uAgent.contains ("MSIE") && uAgent.contains ("Windows")) {

browser_version = uAgent.substring (uAgent.indexOf ("MSIE") + 5 ،

uAgent.indexOf ("Windows") - 2) ؛

} if if (uAgent.contains ("Trident / 7.0")) {

browser_version = "11.0" ؛

} آخر {

browser_version = "00" ؛

}

} آخر {

// إصدار المتصفح لمتصفح فايرفوكس وكروم

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

}

سلسلة التصفح = browser_version.substring (0 ،

browser_version.indexOf ( "."))؛

السلسلة bVersion = String.format ("٪ 02d" ، Integer.parseInt (التصفح)) ؛

return ((اسم المستعرض) + "_" + bVersion) ؛

}

ثابت String browserNameConvert (String browser_name) {

إذا (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name ، "المستكشف")) {

إرجاع "IE" ؛

} آخر إذا (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name ، "firefox")) {

إرجاع "FF" ؛

} آخر إذا (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name ، "chrome")) {

إرجاع "CH" ؛

} آخر إذا (org.apache.commons.lang3.StringUtils.containsIgnoreCase (

browser_name ، "رحلات السفاري")) {

إرجاع "SF" ؛

} آخر {

إرجاع "NA" ؛

}

}

}

ملف خاصية اتصال قاعدة بيانات MSSQL مع بيانات اعتماد المستخدم وإجراءات المتجر

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

dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver

dbURL = جدبك: سيكلسرفير: // YOURSERVERURL؛ قاعدة بيانات = و databasename؛ المستخدم = USERNAME، PASSWORD كلمة المرور =

SPSql = {call STOREPROCEDURE (؟،؟،؟،؟،؟،؟،؟،؟)}

للحفظ في قاعدة البيانات ، يتم سرد إجراء المتجر الذي تم إنشاؤه بالفعل في هذا المثال وجميع هذه البيانات لاتصال قاعدة البيانات وإجراء مخزن في ملف الخصائص.

يتم تحويل اسم المستعرض إلى صيغتين قصيرتين مثل FF (Firefox) و CH (Chrome) وما إلى ذلك. كما يمكن أيضًا العثور على إصدار المتصفح برمجيًا بما في ذلك رقم إصدار Internet Explorer. يدعم هذا البرنامج النصي إصدارات Internet Explorer 8،9،10،11.

المقال السابق

إجراء بحث عكسي عن الصور باستخدام بحث الصور من Google

إجراء بحث عكسي عن الصور باستخدام بحث الصور من Google

البحث العكسي عن الصور هو طريقة بحث قوية يمكنها البحث عن صورة. مثل Google Search Engine ، يمكن أن ينتج عن هذا البحث في Google بالصور معلومات عن الصورة. يمكن استخدام بحث Google بالصور لاكتشاف اسم المشاهير من خلال البحث العكسي عن الصور. باستخدام ميزة البحث بالصور هذه من Google ، يمكنك الحصول على صور مماثلة لصورة موقع الويب. أدخلت Google هذه الميزة الجديدة في متصفح Chrome في البداية ، وسعت ن...

المقالة القادمة

كيفية اختيار الحق في درجة حرارة اللون CFL لتخصيص مزاج غرفتك

كيفية اختيار الحق في درجة حرارة اللون CFL لتخصيص مزاج غرفتك

فيس بوك تغريد موقع Pinterest ال WhatsApp برقية مصباح الفلورسنت المدمج (لمبات CFL) يشبه اللون الأبيض ، لكنه ينتج نغمة أو لون مختلف للضوء. عندما تتسوق مصباح لمنزلك ، يجب عليك اختيار مصابيح CFL المناسبة لدرجات حرارة اللون لتضيء جوك بالمزاج المناسب. عادةً ما تختلف درجة حرارة اللون المتاحة (نغمة) ضوء CFL من الأصفر إلى الأعلى من الأبيض المزرق الذي يعطي مظهر ضوء النهار الطبيعي. درجة حرارة اللون قابلة للتطبيق على مصابيح LED. ...