
هذا هو أخذ لقطة شاشة باستخدام 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.