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

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

أفضل مديري التنزيل لنظام التشغيل Windows 10

أفضل مديري التنزيل لنظام التشغيل Windows 10

أصبح مديرو التنزيلات أداة ضرورية في عصر التكنولوجيا والتوافر الشامل للويب. يرث كل متصفح تقريبًا آلية جيدة لإدارة التنزيل ، لكنه لا يعطي أداءً عامًا يسعى الكثيرون إلى تحقيقه. المحتوى مثل الأفلام والبرامج التلفزيونية والموسيقى متاح دائمًا للتنزيل. المحتوى مثل الأفلام والبرامج التلفزيونية والموسيقى متاح دائمًا للتنزي...

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

كيف تعرف أن رسالة iMessage مجانية أم لا.

كيف تعرف أن رسالة iMessage مجانية أم لا.

تطبيق الرسائل النصية المدمجة من Apple يسمح iMessage بالرسائل النصية المجانية عبر جميع أجهزة iOS و Mac OS طالما أن لديهم إمكانية الوصول إلى الإنترنت. في الأساس ، لا تستخدم iMessage رسالة نصية للبائع الخاص بك. يمكنك إرسال رسائل صورية أو نصية عبر iMessage إلى أي جهاز يعمل بنظام iOS أو Mac مجانًا. ومع ذلك ، فإن iMesaage ليس مجانيًا عند إرسال رسائل إ...