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

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

أفضل 10 تطبيقات Android Weather Station لاستخدامها مع Android Tablet

أفضل 10 تطبيقات Android Weather Station لاستخدامها مع Android Tablet

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

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

كيفية تعطيل جافا على أجهزة الكمبيوتر ويندوز.

كيفية تعطيل جافا على أجهزة الكمبيوتر ويندوز.

سمعنا عن هجمات المتسللين الأخيرة على أجهزة الكمبيوتر المحمولة على Twitter و Facebook و Mac ، وهناك الكثير من الأسئلة التي تطرح حول أمان Java. يمكنك تعطيل Java على الكمبيوتر المحمول الذي يعمل بنظام Windows لحماية الكمبيوتر من الهجمات. يشرح هذا المنشور كيفية تعطيل Java على نظام التشغيل Windows. يمكنك إعادة تمكين البرنامج إذا كنت تريد في المستقبل لمواقع البرامج القائمة على جافا. يكون المكون ا...