सेलेनियम फ्रेमवर्क क्या है?
सेलेनियम फ्रेमवर्क एक कोड संरचना कोड रखरखाव आसान और कुशल बनाता है। फ्रेमवर्क के बिना, उपयोगकर्ता "कोड" और "डेटा" एक ही स्थान पर रख सकते हैं जो न तो पुन: प्रयोज्य है और न ही पढ़ने योग्य है। फ्रेमवर्क लाभकारी परिणाम उत्पन्न करते हैं जैसे कि कोड पुन: प्रयोज्य, उच्च पोर्टेबिलिटी, स्क्रिप्ट रखरखाव की कम लागत, बेहतर कोड पठनीयता, आदि।
मैन्युअल परीक्षण मामलों को स्वचालित करने के लिए सेलेनियम वेबड्राइवर द्वारा मुख्य रूप से तीन प्रकार के ढांचे बनाए गए हैं
- डेटा ड्रिवेन टेस्ट फ्रेमवर्क
- कीवर्ड ड्रिवेन टेस्ट फ्रेमवर्क
- हाइब्रिड टेस्ट फ्रेमवर्क
सेलेनियम में डेटा ड्रिवेन फ्रेमवर्क
सेलेनियम में डेटा ड्रिवेन फ्रेमवर्क, डेटा सेट को टेस्ट केस से अलग करने की एक विधि है। एक बार जब डेटा सेट को परीक्षण के मामले से अलग कर दिया जाता है, तो कोड को बदले बिना किसी विशिष्ट कार्यक्षमता के लिए इसे आसानी से संशोधित किया जा सकता है। इसका उपयोग एक्सेल, .csv, .xml या कुछ डेटाबेस तालिकाओं जैसे बाहरी फ़ाइलों से परीक्षण के मामलों और सुइट्स को लाने के लिए किया जाता है।
एक एक्सेल पढ़ने या लिखने के लिए, अपाचे एक बहुत प्रसिद्ध पुस्तकालय POI प्रदान करता है। यह लाइब्रेरी एक्सेल के XLS और XLSX फाइल फॉर्मेट दोनों को पढ़ने और लिखने में काफी सक्षम है ।
एक्सएलएस फाइलों को पढ़ने के लिए पीओआई लाइब्रेरी द्वारा एक एचएसएसएफ कार्यान्वयन प्रदान किया जाता है।
XLSX को पढ़ने के लिए POI लाइब्रेरी के XSSF कार्यान्वयन का विकल्प होगा। आइए इन कार्यान्वयनों का विस्तार से अध्ययन करें।
हमने अपने पिछले ट्यूटोरियल में पहले से ही डेटा ड्रिवन टेस्टिंग के बारे में सीखा
सेलेनियम में कीवर्ड ड्रिवेन फ्रेमवर्क
सेलेनियम में कीवर्ड ड्रिवेन फ्रेमवर्क एक विधि है जिसका उपयोग कार्यों और निर्देशों के सामान्य सेट के लिए कीवर्ड को अलग करके स्वचालित परीक्षण को तेज करने के लिए किया जाता है। प्रदर्शन किए जाने वाले सभी ऑपरेशन और निर्देश किसी बाहरी फ़ाइल जैसे एक्सेल शीट में लिखे गए हैं। उपयोगकर्ता आसानी से उन कार्यक्षमताओं को नियंत्रित और निर्दिष्ट कर सकते हैं जिन्हें वे परीक्षण करना चाहते हैं।
यहां बताया गया है कि पूरा ढांचा कैसा है
जैसा कि आप देख सकते हैं कि यह 5 कदम की रूपरेखा है। आइए इसका विस्तार से स्टेप वाइज अध्ययन करें
चरण 1)
- ड्राइवर स्क्रिप्ट Execute.java ReadGuru99ExcelFile.java को कॉल करेगी
- ReadGuru99ExcelFile.java में एक एक्सेल से डेटा पढ़ने के लिए POI स्क्रिप्ट है
चरण 2)
- ReadGuru99ExcelFile.java TestCase.xlsx के डेटा को पढ़ेगा
- यहां बताया गया है कि चादर कैसी है-
- एक्सेल फाइल में लिखे कीवर्ड के अनुसार, फ्रेमवर्क UI पर ऑपरेशन करेगा।
- उदाहरण के लिए, हमें एक बटन 'लॉगिन' पर क्लिक करना होगा। इसके विपरीत, हमारे एक्सेल में एक कीवर्ड होगा 'क्लिक करें।' अब AUT में एक पेज पर सैकड़ों बटन हो सकते हैं, एक लॉगिन बटन की पहचान करने के लिए, एक्सेल में हम ऑब्जेक्ट नेम को लॉगिनबटन और ऑब्जेक्ट प्रकार के नाम के रूप में इनपुट करेंगे (ऊपर की छवि में पंक्ति को हाइलाइट करें देखें)। ऑब्जेक्ट प्रकार Xpath, सीएसएस नाम या कोई अन्य मान हो सकता है
चरण 3) ReadGuru99ExcelFile.java ड्राइवर स्क्रिप्ट Execute.java को यह डेटा पास करेगा
चरण 4)
- हमारे सभी UI वेब तत्वों के लिए, हमें एक ऑब्जेक्ट रिपॉजिटरी बनाने की आवश्यकता है जहां हम उनके तत्व लोकेटर (जैसे Xpath, नाम, CSS पथ, वर्ग नाम आदि) रखेंगे।
- Execute.java (हमारा ड्राइवर स्क्रिप्ट) संपूर्ण ऑब्जेक्ट रिपॉजिटरी को पढ़ेगा और इसे एक चर में संग्रहीत करेगा
- इस ऑब्जेक्ट रिपॉजिटरी को पढ़ने के लिए, हमें ReadObject क्लास की आवश्यकता होती है, जिसमें इसे पढ़ने के लिए एक getObjectRepository तरीका होता है।
नोट: आप सोच सकते हैं कि हमें ऑब्जेक्ट रिपॉजिटरी बनाने की आवश्यकता क्यों है। उत्तर कोड रखरखाव में मदद करता है। उदाहरण के लिए, हम 10 अलग-अलग परीक्षण मामलों में नाम = btnlogin के साथ बटन का उपयोग कर रहे हैं। भविष्य में, डेवलपर ने सबमिट करने के लिए btnlogin से नाम बदलने का फैसला किया। आपको सभी 10 परीक्षण मामलों में बदलाव करना होगा। ऑब्जेक्ट रिपॉजिटरी के मामले में, आप रिपॉजिटरी में सिर्फ एक बार बदलाव करेंगे।
चरण 5)
- ड्राइवर Excel & Object Repository से UIOperation क्लास में डेटा पास करेगा
- UIOperation क्लास में एक्सेल में उल्लिखित CLICK, SETTEXT आदि कीवर्ड्स के अनुरूप कार्य करने के लिए कार्य हैं
- UIOperation क्लास एक जावा क्लास है जिसमें वेब एलिमेंट्स पर ऑपरेशन करने के लिए कोड का वास्तविक कार्यान्वयन है
पूरा प्रोजेक्ट लगेगा-
आइए एक उदाहरण देखें:
परिदृश्य का परीक्षण करें
- हम 2 परीक्षण मामलों को निष्पादित कर रहे हैं
- टेस्ट केस 1:
- गोटो http://demo.guru99.com/V4/
- उपयोगकर्ता आईडी दर्ज करें
- पास वर्ड दर्ज करें
- रीसेट पर क्लिक करें
- टेस्ट केस 2:
- गोटो http://demo.guru99.com/V4/
- उपयोगकर्ता आईडी दर्ज करें
- पास वर्ड दर्ज करें
- लॉगिन पर क्लिक करें
वस्तु
url = http: //demo.guru99.com/V4/
उपयोगकर्ता नाम = uid
पासवर्ड = पासवर्ड
शीर्षक = बैरन
लॉगिनबटन = btnLogin
रीसेटबटन = btnReset
ReadGuru99ExcelFile.java
पैकेज excelExportAndFileIO;आयात java.io.File;आयात java.io.FileInputStream;आयात java.io.IOException;आयात org.apache.poi.hssf.usermodel.HSSFWorkbook;आयात org.apache.poi.ss.usermodel.Sheet;आयात org.apache.poi.ss.usermodel.Workbook;आयात org.apache.poi.xssf.usermodel.XSSFWorkbook;पब्लिक क्लास ReadGuru99ExcelFile {सार्वजनिक शीट readExcel (स्ट्रिंग फ़ाइलपाठ, स्ट्रिंग फ़ाइलनाम, स्ट्रिंग शीट नाम) IOException {फेंकता है// xlsx फाइल को खोलने के लिए फाइल क्लास का ऑब्जेक्ट बनाएंफ़ाइल फ़ाइल = नई फ़ाइल (filePath + "\\" + fileName);// एक्सेल फाइल पढ़ने के लिए FileInputStream क्लास का ऑब्जेक्ट बनाएंFileInputStream inputStream = नई FileInputStream (फ़ाइल);कार्यपुस्तिका गुरु 99 वॉर्कबुक = अशक्त;// फ़ाइल एक्सटेंशन को केवल विकल्प नाम में बदलने और प्राप्त करने के द्वारा फ़ाइल एक्सटेंशन का पता लगाएंस्ट्रिंग fileExtensionName = fileName.substring (fileName.indexOf ("।"));// अगर xlsx फाइल है तो कंडीशन चेक करेंअगर (fileExtensionName.equals ("। xlsx")) {// अगर यह xlsx फाइल है तो XSSFWorkbook क्लास का ऑब्जेक्ट बनाएंGuru99Workbook = नया XSSFWorkbook (inputStream);}// स्थिति की जाँच करें यदि फ़ाइल xls फ़ाइल हैऔर अगर (fileExtensionName.equals ("। xls")) {// अगर यह xls फाइल है तो XSSFWorkbook क्लास का ऑब्जेक्ट बनाएंGuru99Workbook = नया HSSFWorkbook (inputStream);}// अपने नाम से कार्यपुस्तिका के अंदर शीट पढ़ेंशीट गुरु 99Sheet = guru99Workbook.getSheet (पत्रक नाम);वापसी गुरु 99Sheet;}}
ReadObject.java
पैकेज संचालन;आयात java.io.File;आयात java.io.FileInputStream;आयात java.io.IOException;आयात java.io.InputStream;आयात java.util.Properties;सार्वजनिक वर्ग ReadObject {गुण p = नए गुण ();सार्वजनिक गुण// ऑब्जेक्ट रिपॉजिटरी फ़ाइल पढ़ेंInputStream स्ट्रीम = नई FileInputStream (नई फ़ाइल (System.getProperty ("user.dir") + "\\ src \\ ऑब्जेक्ट्स \\ object.properties");// सभी वस्तुओं को लोड करेंp.load (धारा);वापसी पी;}}
UIOperation.java
पैकेज संचालन;आयात java.util.Properties;आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebDriver;सार्वजनिक वर्ग का उत्थान {WebDriver ड्राइवर;जनता का उत्थान (वेबड्राइवर ड्राइवर) {this.driver = चालक;}सार्वजनिक शून्य प्रदर्शन (गुण p, स्ट्रिंग ऑपरेशन, स्ट्रिंग ऑब्जेक्टनाम, स्ट्रिंग ऑब्जेक्ट टाइप, स्ट्रिंग मान) थ्रेड अपवादSystem.out.println ("");स्विचमामला "क्लिक करें":// प्रदर्शन पर क्लिक करेंड्राइवर।टूटना;मामला "SETTEXT":// नियंत्रण पर पाठ सेट करेंDriver.findElement (this.getObject (p, objectName, objectType))। sendKeys (मान);टूटना;मामला "GOTOURL":// आवेदन का यूआरएल प्राप्त करेंDriver.get (p.getProperty (मान));टूटना;मामला "GETTEXT":// एक तत्व का पाठ प्राप्त करेंDriver.findElement (this.getObject (p, objectName, objectType))। getText ();टूटना;चूक:टूटना;}}/ *** ऑब्जेक्ट प्रकार और मूल्य का उपयोग करके तत्व खोजें* @पारम पी* @ अपरम ऑब्जेक्टनेम* @ अपर वस्तु* @वापसी* @ भ्रांतियाँ* /निजी द्वारा getObject (गुण p, स्ट्रिंग ऑब्जेक्टनाम, स्ट्रिंग ऑब्जेक्ट टाइप) अपवाद अपवाद फेंकता है {// xpath द्वारा खोजेंअगर (objectType.equalsIgnoreCase ("XPATH")) {वापसी By.xpath (p.getProperty (objectName));}// वर्ग द्वारा खोजेंऔर यदि (objectType.equalsIgnoreCase ("CLASSNAME")) {वापसी By.className (p.getProperty (objectName));}// नाम से खोजेंऔर यदि (objectType.equalsIgnoreCase ("NAME")) {वापसी By.name (p.getProperty (objectName));}// सीएसएस द्वारा खोजेंऔर अगर (objectType.equalsIgnoreCase ("CSS")) {वापसी By.cssSelector (p.getProperty (objectName));}// लिंक द्वारा खोजेंअगर (objectType.equalsIgnoreCase ("लिंक")) {वापसी By.linkText (p.getProperty (objectName));}// आंशिक लिंक द्वारा खोजेंऔर अगर (objectType.equalsIgnoreCase ("PARTIALLINK")) {वापसी By.partialLinkText (p.getProperty (objectName));}अन्य{{नया अपवाद फेंकें ("गलत वस्तु प्रकार");}}}
ExecuteTest.java
पैकेज परीक्षण;आयात java.util.Properties;आयात संचालन। ReadObject;आयात संचालन।आयात org.apache.poi.ss.usermodel.Row;आयात org.apache.poi.ss.usermodel.Sheet;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.firefox.FirefoxDriver;आयात org.testng.annotations.Test;आयात excelExportAndFileIO.ReadGuru99ExcelFile;सार्वजनिक वर्ग ExecuteTest {@परीक्षासार्वजनिक शून्य परीक्षणलोगिन () अपवाद {// TODO ऑटो-जनरेट विधि ठूंठWebDriver webdriver = new FirefoxDriver ();ReadGuru99ExcelFile फ़ाइल = नया ReadGuru99ExcelFile ();ReadObject ऑब्जेक्ट = नया ReadObject ();गुण allObjects = object.getObjectRepository ();UIOperation Operation = नया UIOperation (webdriver);// कीवर्ड शीट पढ़ेंशीट गुरु 99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// एक्सेल फाइल में पंक्तियों की संख्या ज्ञात कीजिएint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// इसे पढ़ने के लिए एक्सेल फाइल की सभी पंक्तियों पर एक लूप बनाएंfor (int i = 1; मैं" + row.getCell (0) .toString () + "प्रारंभ");}}}}
निष्पादन के बाद, आउटपुट जैसा दिखेगा -
इस ट्यूटोरियल में सेलेनियम प्रोजेक्ट फाइल्स को डेमो के लिए डाउनलोड करें
हाइब्रिड फ्रेमवर्क
सेलेनियम में हाइब्रिड फ्रेमवर्क एक अवधारणा है जहां हम दोनों कीवर्ड संचालित फ्रेमवर्क के साथ-साथ डेटा संचालित फ्रेमवर्क का लाभ उठा रहे हैं। फ्रेमवर्क का उपयोग करना आसान है, जो मैनुअल परीक्षकों को केवल फ्रेमवर्क में कोडिंग के बिना कीवर्ड, टेस्ट डेटा और ऑब्जेक्ट रिपॉजिटरी को देखकर टेस्ट केस बनाने की अनुमति देता है।
यहां कीवर्ड के लिए, हम परीक्षण मामलों को बनाए रखने के लिए Excel फ़ाइलों का उपयोग करेंगे, और परीक्षण डेटा के लिए, हम डेटा का उपयोग कर सकते हैं, Testng फ्रेमवर्क के प्रदाता।
यहाँ हमारे हाइब्रिड फ्रेमवर्क में, हमें Keyword संचालित फ्रेमवर्क में कुछ भी बदलने की आवश्यकता नहीं है, यहाँ हमें ExecuteTest.java फ़ाइल को HybridExecuteTest.java फ़ाइल के साथ बदलने की आवश्यकता है।
इस HybridExecuteTest फ़ाइल में डेटा प्रदाता अवधारणा के साथ संचालित कीवर्ड के लिए सभी कोड हैं।
हाइब्रिड फ्रेमवर्क का पूरा सचित्र प्रतिनिधित्व जैसा दिखेगा
HybridExecuteTest.java
पैकेज परीक्षण;आयात java.io.IOException;आयात java.util.Properties;आयात संचालन। ReadObject;आयात संचालन।आयात org.apache.poi.ss.usermodel.Row;आयात org.apache.poi.ss.usermodel.Sheet;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.firefox.FirefoxDriver;आयात org.testng.annotations.DataProvider;आयात org.testng.annotations.Test;आयात excelExportAndFileIO.ReadGuru99ExcelFile;सार्वजनिक वर्ग HybridExecuteTest {WebDriver webdriver = null;@ टेस्ट (डेटाप्रोइडर = "हाइब्रिडडाटा")public void testLogin (स्ट्रिंग टेस्टकेसनाम, स्ट्रिंग कीवर्ड, स्ट्रिंग ऑब्जेक्टनाम, स्ट्रिंग ऑब्जेक्ट टाइप, स्ट्रिंग मान) अपवाद फेंकता है {// TODO ऑटो-जनरेट विधि ठूंठif (टेस्टकेसनाम! = null && testcaseName.length ()! = 0) {webdriver = new FirefoxDriver ();}ReadObject ऑब्जेक्ट = नया ReadObject ();गुण allObjects = object.getObjectRepository ();UIOperation Operation = नया UIOperation (webdriver);// कॉल प्रदर्शन समारोह UI पर ऑपरेशन करने के लिएOperation.perform (allObjects, कीवर्ड, ऑब्जेक्टनेम,ऑब्जेक्ट टाइप, मान);}@DataProvider (नाम = "हाइब्रिडडाटा")सार्वजनिक वस्तु [] [] getDataFromDataprovider () IOException {फेंकता हैवस्तु [] [] वस्तु = अशक्त;ReadGuru99ExcelFile फ़ाइल = नया ReadGuru99ExcelFile ();// कीवर्ड शीट पढ़ेंशीट गुरु 99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// एक्सेल फाइल में पंक्तियों की संख्या ज्ञात कीजिएint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();ऑब्जेक्ट = नई वस्तु [rowCount] [5];for (int i = 0; मैंसारांश:
- हम सेलेनियम वेबड्राइवर का उपयोग करके तीन प्रकार के परीक्षण ढांचे बना सकते हैं।
- ये डेटा ड्रिवेन, कीवर्ड ड्रिवेन और हाइब्रिड टेस्ट फ्रेमवर्क हैं।
- हम TestNG के डेटा प्रदाता का उपयोग करके डेटा-संचालित फ्रेमवर्क प्राप्त कर सकते हैं।
- कीवर्ड संचालित फ्रेमवर्क में, कुछ बाहरी फ़ाइलों जैसे कि एक्सेल फ़ाइल में कीवर्ड लिखे जाते हैं और जावा कोड इस फाइल को कॉल करेगा और परीक्षण मामलों को निष्पादित करेगा।
- हाइब्रिड फ्रेमवर्क कीवर्ड संचालित और डेटा संचालित फ्रेमवर्क का मिश्रण है।
इस ट्यूटोरियल में सेलेनियम प्रोजेक्ट फाइल्स को डेमो के लिए डाउनलोड करें