यह सेलेनियम वेबड्राइवर का उपयोग करके स्क्रीनशॉट लेने और एमएस SQL डेटाबेस में सहेजने के लिए है। छवि डेटाबेस में सहेज रही है छवि नाम के साथ ब्राउज़र नाम, ब्राउज़र संस्करण, अनुक्रम संख्या और परिदृश्य नाम के साथ परिशिष्ट। यह कोड Chrome, Firefox, Internet Explorer और Safari समर्थित है।
यदि आप चाहें तो चित्र को स्थानीय फ़ोल्डर में सहेजने के लिए लाइन 63-70 के बीच एक और विकल्प है। आप स्थानीय सिस्टम में एक फ़ोल्डर सेट कर सकते हैं और यह तस्वीर को आपके द्वारा MSSql डेटाबेस में png प्रारूप और बाइट प्रारूप में निर्दिष्ट फ़ोल्डर में सहेज देगा।
स्क्रीनशॉट लें और जावा और सेलेनियम वेब्राइवर का उपयोग करके MSSQL डेटाबेस में सहेजें
पैकेज 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;
आयात org.openqa.selenium.Cabilities;
आयात org.openqa.selenium.JavascriptExecutor;
आयात org.openqa.selenium.OutputType;
आयात org.openqa.selenium.TakesScreenshot;
आयात org.openqa.selenium.WebDriver;
आयात org.openqa.selenium.remote.RemoteWebDriver;
सार्वजनिक वर्ग ImageSave {
निजी स्थिर int imageSeqNo = 0;
निजी स्थिर स्ट्रिंग दर्शनीय स्थल;
निजी स्थिर वेबड्राइवर ब्राउज़रड्राइवर;
निजी स्थिर इंट ब्राउजर;
निजी स्थिर इंट ब्राउज़रहाइट;
सार्वजनिक स्थैतिक स्ट्रिंग ब्राउज़र;
सार्वजनिक स्थैतिक वेबड्राइवर चालक;
सार्वजनिक स्थैतिक int getBrowserWidth () {
browserWidth लौटें;
}
सार्वजनिक स्थैतिक int getBrowserHeight () {
BrowserHeight पर लौटें;
}
सार्वजनिक स्थैतिक स्ट्रिंग getScenName () {
दर्शनीय स्थल का नाम;
}
सार्वजनिक स्थैतिक int getImageSeqNo () {
वापसी की छवि
}
सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) अपवाद {
// BrowserDriver.getCurrentDriver ();
}
सार्वजनिक स्थैतिक शून्य addScreenshot (WebDriver ड्राइवर) IOException को फेंकता है,
ClassNotFoundException, InterruptedException {
बाइट [] scrByte = getScreenShotBytes (ड्राइवर);
ब्राउज़र = getBrowserAndVersion ();
स्ट्रिंग परिदृश्यनाम = getScenName ();
स्ट्रिंग छविनाम = परिदृश्यनाम + "" + ब्राउज़र + ""
+ System.currentTimeMillis () + ".png";
फ़ाइल स्क्रिफ़ाइल = getScreenShotFile (ड्राइवर);
स्ट्रिंग स्क्रीनवाइटहाइट = getImageWidthHeight (scrFile);
// यदि स्थानीय सिस्टम में स्क्रीन शॉट चित्र को सहेजना चाहते हैं, तो नीचे की रेखा को सक्षम करें
// FileUtils.copyFile (scrFile, नई फ़ाइल ("C: // स्क्रीनशॉट //" + imageName));
निवेशनमैबीडीबी (स्क्रबट, परिदृश्यनाम, इमेजनेम, स्क्रीनविदहाइट,
ब्राउज़र);
Thread.Sleep (1000);
}
सार्वजनिक स्थिर स्ट्रिंग getImageWidthHeight (फ़ाइल छवि फ़ाइल) IOException को फेंकता है {
बफ़रेडइमेज bimg = ImageIO.read (imageFile);
int imageWidth = bimg.getWidth ();
int imageHeight = bimg.getHeight ();
अगर (चित्र। = 0) {
वापसी छविवार्ड + "x" + imageHeight;
} अन्य {
वापसी "FullScreenx" + imageHeight;
}
}
सार्वजनिक स्थैतिक फ़ाइल getScreenShotFile (वेबड्राइवर ड्राइवर) {
// WebDriver driverA = new Augmenter ()। वृद्धि (ड्राइवर);
वापसी (TakesScreenshot) ड्राइवर) .getScreenshotAs (OutputType.FILE);
}
जनता स्टेटिक बाइट [] getScreenShotBytes (वेबड्राइवर ड्राइवर) {
वापसी ((TakesScreenshot) ड्राइवर) .getScreenshotAs (OutputType.BYTES);
}
सार्वजनिक स्थैतिक शून्य सम्मिलित करेंआईएमबीडीबी (बाइट [] इमेजबाइट, स्ट्रिंग नेमनाम,
स्ट्रिंग छविनाम, स्ट्रिंग स्क्रीनवार्डहाइट, स्ट्रिंग ब्राउज़र)
फेंकता ClassNotFoundException {
गुण dbProp = नए गुण ();
इनपुटस्ट्रीम dbPropInput = null;
परिणामी rs = null;
तैयार किया हुआ ps = null;
कनेक्शन con = null;
// setImageSeqNo (getImageSeqNo () + 1);
int seqNo = getImageSeqNo ();
System.out.println (scenName + ”- ”+ ब्राउज़र +” - ”
+ स्क्रीनवाइटहाइट + "- शॉट नंबर:" + seNNo);
प्रयत्न {
स्ट्रिंग PropPath = "। \ Src \ test \ Resources \ props \ dbConnect.properties";
dbPropInput = new FileInputStream (propPath);
dbProp.load (dbPropInput); // लोड संपत्ति फ़ाइल
स्ट्रिंग 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 ("छवि टाइमस्टैम्प =" + sqlTimestamp);
ps.setEscapeProcessing (सही);
ps.setQueryTimeout (90); // टाइमआउट मान बाद में अक्षम हो सकता है, चित्र
ps.setString (1, "प्रोजेक्ट");
ps.setString (2, दर्शनीयनाम);
ps.setString (3, ब्राउज़र);
ps.setString (4, स्क्रीनविथ हाइट);
ps.setTimestamp (5, sqlTimestamp);
ps.setInt (6, seqNo);
ps.setString (7, imageName);
ps.setBytes (8, imageByte);
// डेटा बेस अपडेट को निष्क्रिय करने के लिए नीचे की पंक्ति
ps.executeUpdate ();
} कैच (IOException e) {
e.printStackTrace ();
} कैच (SQLException e) {
e.printStackTrace ();
} आखिरकार {
प्रयत्न {
अगर (dbPropInput! = null)
dbPropInput.close ();
अगर (rs! = null)
rs.close ();
अगर (पीएस = शून्य)
ps.close ();
अगर (con! null)
con.close ();
} पकड़ (अपवाद ई) {
e.printStackTrace ();
}
}
}
सार्वजनिक स्थैतिक स्ट्रिंग getBrowserAndVersion () {
स्ट्रिंग Browser_version = null;
क्षमता टोपी = ((RemoteWebDriver) ड्राइवर) .getCapabilities ();
स्ट्रिंग ब्राउज़रनाम = cap.getBrowserName ();
// यह ब्लॉक IE संस्करण संख्या का पता लगाने के लिए
अगर ("इंटरनेट एक्सप्लोरर" .equalsIgnoreCase (ब्राउज़रनाम)) {
स्ट्रिंग uAgent = (स्ट्रिंग) ((JavascriptExecutor) ड्राइवर)
.executeScript ("रिटर्न नेविगेटर.यूज़रएजेंट;");
Println (uAgent);
// u8 के लिए "MSIE 8.0 विंडोज" के रूप में uAgent रिटर्न
अगर (uAgent.contains ("MSIE") && uAgent.contains ("Windows")) {
Browser_version = uAgent.substring (uAgent.indexOf ("MSIE") + 5,
uAgent.indexOf ("विंडोज") - 2);
} और यदि (uAgent.contains ("त्रिशूल / 7.0")) {
Browser_version = "11.0";
} अन्य {
Browser_version = "00";
}
} अन्य {
// फ़ायरफ़ॉक्स और क्रोम के लिए ब्राउज़र संस्करण
browser_version = cap.getVersion (); // .plplit ("।") [0];
}
स्ट्रिंग भौंकना = browser_version.substring (0,
browser_version.indexOf ( "।"));
स्ट्रिंग bVersion = String.format ("% 02d", Integer.parseInt (browserversion));
वापसी (ब्राउज़रनाम) + "_" + bVersion);
}
सार्वजनिक स्थैतिक स्ट्रिंग BrowserNameConvert (स्ट्रिंग ब्राउज़र_नाम) {
अगर (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
Browser_name, "एक्सप्लोरर")) {
वापसी "IE";
} और अगर (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
Browser_name, "फ़ायरफ़ॉक्स")) {
वापसी "एफएफ";
} और अगर (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
Browser_name, "क्रोम"))) {
वापसी "सीएच";
} और अगर (org.apache.commons.lang3.StringUtils.containsIgnoreCase (
Browser_name, "सफारी")) {
वापसी "एसएफ";
} अन्य {
वापसी "NA";
}
}
}
उपयोगकर्ता क्रेडेंशियल्स और स्टोर प्रक्रिया के साथ MSSQL डाटाबेस कनेक्शन संपत्ति फ़ाइल
################## dbConnect.properties ##################
dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbURL = JDBC: sqlserver: // YOURSERVERURL; डेटाबेस = DatabaseName; उपयोगकर्ता = USERNAME; पासवर्ड = पासवर्ड
SPSql = {कॉल STOREPROCEDURE (?;?; ?, ?, ?, ?, ?, ?)}
डेटाबेस में सहेजने के लिए, इस उदाहरण में पहले से बनाई गई स्टोर प्रक्रिया और डेटाबेस कनेक्शन और स्टोर प्रक्रिया के लिए ये सभी डेटा संपत्ति फ़ाइल में सूचीबद्ध हैं।
ब्राउज़र का नाम 2 चार लघु रूपों जैसे एफएफ (फ़ायरफ़ॉक्स), सीएच (क्रोम) आदि में परिवर्तित होता है। यह इंटरनेट एक्सप्लोरर संस्करण संख्या सहित प्रोग्राम वर्जन को खोजने में सक्षम है। यह स्क्रिप्ट इंटरनेट एक्सप्लोरर संस्करण 8, 9, 10, 11 का समर्थन करती है।