كيفية أخذ لقطة للشاشة وحفظها في قاعدة بيانات 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.

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

8 أفضل تطبيق GPS لنظام Android لاختبار GPS داخلي

8 أفضل تطبيق GPS لنظام Android لاختبار GPS داخلي

هناك العديد من التطبيقات على جهاز Android تستخدم موقع الهاتف بمساعدة Android GPS Sensor الداخلي. بالإضافة إلى مستشعر GPS هذا ، هناك مستشعرات أخرى مثل Proxim و Gyrometer و Accelerometer وما إلى ذلك ، تعمل في خلفية هاتف Android للتطبيقات والعمليات المختلفة. من الضروري تشغيل Android GPS وهذه المستشعرات دون أي فشل في تشغيل ألعاب وتطبيقات Map وتطبيقات Android الأخرى كما هو متوقع. على سبيل المثال ، يكون GPS ...

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

أفضل ملحقات المتصفح وتطبيقات قراءة المواقع دون اتصال

أفضل ملحقات المتصفح وتطبيقات قراءة المواقع دون اتصال

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