page object model selenium without using page factory
पेज ऑब्जेक्ट मॉडल (POM) वेब तत्वों के लिए ऑब्जेक्ट रिपॉजिटरी को बनाए रखने के लिए एक डिज़ाइन पैटर्न है। यह ट्यूटोरियल समझाता है कि पेज फैक्ट्री के बिना सेलेनियम में पोम कैसे लागू करें:
स्क्रिप्टेड ऑटोमेशन प्रोजेक्ट को इस तरह से डिज़ाइन किया जाना है कि यह अनुकूलित और समझने में आसान हो। यह POM का उपयोग करके प्राप्त किया जाता है जो एक रूपरेखा तैयार करने के लिए कुछ दिशानिर्देशों का पालन करता है।
हम इसके बारे में अधिक जानेंगे:
- POM क्या है?
- एक परियोजना में POM के उपयोग के लाभ
- पेज फैक्ट्री दृष्टिकोण का उपयोग किए बिना एक बेसिक पोम कैसे बनाएं?
=> विशेष सेलेनियम प्रशिक्षण ट्यूटोरियल श्रृंखला के लिए यहां जाएं।
आप क्या सीखेंगे:
पेज फैक्ट्री मॉडल विदाउट पेज फैक्ट्री
पेज ऑब्जेक्ट मॉडल एक डिज़ाइन पैटर्न है जिसका उपयोग वेब तत्वों के लिए ऑब्जेक्ट रिपॉजिटरी को बनाए रखने के लिए किया जाता है। यहां, सभी वेब एलिमेंट्स और उनके संबंधित तरीकों को प्रत्येक वेबपेज के लिए एक अलग वर्ग में रखा गया है। इसलिए, एक WebElement की विशेषता में एक भी परिवर्तन जहां भी इसका उपयोग किया जाता है, सभी परीक्षण मामलों को प्रतिबिंबित करेगा। इस तरह, यह आसान वस्तु भंडार रखरखाव को बढ़ाता है।
पृष्ठ ऑब्जेक्ट्स आदर्श है जब उन अनुप्रयोगों के लिए उपयोग किया जाता है जिनमें कई पृष्ठ या राज्य होते हैं।
यहाँ वीडियो ट्यूटोरियल हैं:
भाग I
भाग द्वितीय
पोम के फायदे
नीचे POM के कुछ फायदे दिए गए हैं:
- कोड को बनाए रखना आसान है। कोई भी उपयोगकर्ता इंटरफ़ेस परिवर्तन जहाँ भी कक्षा में उपयोग किया जाता है, उसे प्रतिबिंबित करेगा।
- जोर और पठनीय बनाता कोड (तरीके अधिक यथार्थवादी नाम है)।
- कोड को पुन: प्रयोज्य बनाता है और कोड के दोहराव को कम करता है (ऑब्जेक्ट रिपॉजिटरी परीक्षण मामलों से स्वतंत्र है)।
- कोड कम और अनुकूलित हो जाता है।
पेज फैक्ट्री मॉडल के बिना एक पोम बनाने के लिए कदम
# 1) एप्लिकेशन में हर पेज के लिए जावा क्लास बनाएं।
#दो) प्रत्येक कक्षा में, सभी वेब तत्वों को परिवर्तनशील घोषित करें।
# 3) चर पर कार्य करने वाली संगत विधियों को लागू करें।
डिजाइन पैटर्न को 2 परतों / पैकेजों का उपयोग करके संरचित किया जा सकता है:
- पृष्ठ परत व्यक्तिगत जावा क्लास के रूप में आवेदन के पृष्ठों को धारण करेगा। प्रत्येक कक्षा में वेबलेबल को चर के रूप में घोषित किया जाएगा और क्रियाओं को विधियों के रूप में किया जाएगा।
- टेस्ट लेयर आवेदन और उसके सत्यापन भाग के परीक्षण मामलों को धारण करेगा।
आइए एक सरल परिदृश्य का उदाहरण लें:
- किसी एप्लिकेशन का URL खोलें।
- ईमेल एड्रेस और पासवर्ड डेटा टाइप करें।
- लॉगइन बटन पर क्लिक करें।
- खोज पृष्ठ पर सफल लॉगिन संदेश सत्यापित करें।
पृष्ठ परत
यहाँ हमारे पास 2 पृष्ठ हैं,
- मुखपृष्ठ : URL दर्ज करने पर पृष्ठ खुलता है और यह वह जगह है जहां हम लॉगिन के लिए डेटा दर्ज करते हैं।
- सर्चपज : वह पृष्ठ जो एक सफल लॉगिन के बाद प्रदर्शित होता है।
पृष्ठ परत में, वेब अनुप्रयोग में प्रत्येक पृष्ठ को एक अलग जावा वर्ग के रूप में घोषित किया गया है और इसके नियंत्रण रेखा और क्रियाओं का उल्लेख किया गया है।
वास्तविक समय उदाहरणों के साथ पीओएम बनाने के लिए कदम
# 1) प्रत्येक पृष्ठ के लिए एक जावा वर्ग बनाएँ:
इस में उदाहरण , हम 2 वेब पेज, 'होम' और 'सर्च' पेज एक्सेस करेंगे। इसलिए, हम पेज लेयर में 2 जावा कक्षाएं बनाएंगे (या एक पैकेज में कहते हैं, com.automation.pages)।
Package Name : com.automation.pages HomePage.java SearchPage.java
# 2) वैरिएबल के रूप में वेबलॉग बनाएं:
प्रवाह चार्ट बनाने के लिए सबसे अच्छा उपकरण
हम साथ बातचीत करेंगे:
- होमपेज पर ईमेल, पासवर्ड, लॉगिन बटन फ़ील्ड।
- SearchPage में एक सफल संदेश।
इसलिए हम we By ’क्लास का उपयोग करके WebElements को चर के रूप में बनाएंगे।
उदाहरण के लिए: अगर ईमेल में xpath जैसा है // div (में (@id, contains EmailId ')), तब इसकी चर घोषणा है
// EmailId क्षेत्र के लिए लोकेटर
EmailAddress द्वारा = By.xpath (// div (इसमें (@id, dd EmailId ') शामिल हैं))
# 3) WebElements पर किए गए कार्यों के लिए तरीके बनाएँ:
वेबएल्स पर निम्न कार्य किए जाते हैं:
- EmailAddress फ़ील्ड पर कार्रवाई टाइप करें।
- पासवर्ड फ़ील्ड पर कार्रवाई टाइप करें।
- लॉगिन बटन पर कार्रवाई पर क्लिक करें।
उदाहरण के लिए, उपयोगकर्ता-परिभाषित तरीके WebElement पर प्रत्येक क्रिया के लिए बनाए जाते हैं,
public void typeEmailId(String Id){ driver.findElement(EmailAddress).sendKeys(Id) }
यहां, आईडी को विधि में एक पैरामीटर के रूप में पारित किया जाता है, क्योंकि इनपुट मुख्य परीक्षण मामले से उपयोगकर्ता द्वारा भेजा जाएगा।
ध्यान दें :टेस्ट लेयर में मुख्य वर्ग से ड्राइवर का उदाहरण प्राप्त करने के लिए पेज लेयर में प्रत्येक वर्ग के लिए एक कंस्ट्रक्टर बनाया जाना है।
हम यहां ड्राइवर को आरंभ नहीं करते हैं, बल्कि इसका उदाहरण मेन क्लास से प्राप्त होता है जब पेज लेयर क्लास का ऑब्जेक्ट बनाया जाता है।
नीचे दिखाए गए अनुसार प्रत्येक पृष्ठ के लिए दो जावा कक्षाएं बनाई गई हैं:
होमपेज.जावा
//package com.automation.pages; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; public class HomePage { WebDriver driver; // Locator for Email Address By EmailAddress = By.xpath('//div(contains(@id,'Emaild'))'); // Locator for Password field By Password= By.xpath('//div(contains(@id,'Password'))'); // Locator for SignIn Button By SignInButton= By.xpath('//div(contains(@id,'SignInButton'))'); // Method to type EmailId public void typeEmailId(String Id){ driver.findElement(EmailAddress).sendKeys(Id) } // Method to type Password public void typePassword(String PasswordValue){ driver.findElement(Password).sendKeys(PasswordValue) } // Method to click SignIn Button public void clickSignIn(){ driver.findElement(SignInButton).click() } // Constructor // Gets called when object of this page is created in MainClass.java public HomePage(WebDriver driver) { // 'this' keyword is used here to distinguish global and local variable 'driver' //gets driver as parameter from MainClass.java and assigns to the driver instance in this class this.driver=driver; }
SearchPage.Java
//package com.automation.pages; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; public class SearchPage{ WebDriver driver; // Locator for Success Message By SuccessMessage= By.xpath('//div(contains(@id,'Message'))'); // Method that return True or False depending on whether the message is displayed public Boolean MessageDisplayed(){ Boolean status = driver.findElement(SuccessMessage).isDisplayed(); return status; } // Constructor // This constructor is invoked when object of this page is created in MainClass.java public SearchPage(WebDriver driver) { // 'this' keyword is used here to distinguish global and local variable 'driver' //gets driver as parameter from MainClass.java and assigns to the driver instance in this class this.driver=driver;
टेस्ट लेयर
इस श्रेणी में टेस्ट केस लागू किए जाते हैं।
हम एक अलग पैकेज कहते हैं, com.automation.test बनाएं और फिर यहां जावा क्लास बनाएं (MainClass.java)।
टेस्ट केस बनाने के लिए कदम:
- ड्राइवर को इनिशियलाइज़ करें और एप्लिकेशन खोलें।
- पेजलेयर क्लास (प्रत्येक वेबपेज के लिए) का एक ऑब्जेक्ट बनाएं और ड्राइवर उदाहरण को पैरामीटर के रूप में पास करें।
- बनाई गई वस्तु का उपयोग करके, क्रिया / सत्यापन करने के लिए पेजलेयर क्लास (प्रत्येक वेबपेज के लिए) में विधियों के लिए एक कॉल करें।
- चरण 3 को दोहराएं जब तक कि सभी क्रियाएं नहीं की जाती हैं और तब ड्राइवर को बंद करें।
//package com.automation.test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class MainClass { public static void main(String() args) { System.setProperty('webdriver.chrome.driver','./exefiles/chromedriver.exe'); WebDriver driver= new ChromeDriver(); driver.manage().window().maximize(); driver.get('URL mentioned here'); // Creating object of HomePage and driver instance is passed as parameter to constructor of Homepage.Java HomePage homePage= new HomePage(driver); // Type EmailAddress homePage.typeEmailId('abc@ymail.com'); // EmailId value is passed as paramter which in turn will be assigned to the method in HomePage.Java // Type Password Value homePage.typePassword('password123'); // Password value is passed as paramter which in turn will be assigned to the method in HomePage.Java // Click on SignIn Button homePage.clickSignIn(); // Creating an object of LoginPage and driver instance is passed as parameter to constructor of SearchPage.Java SearchPage searchPage= new SearchPage(driver); //Verify that Success Message is displayed Assert.assertTrue(searchPage.MessageDisplayed()); //Quit browser driver.quit(); } }
निष्कर्ष
इस ट्यूटोरियल ने पेज ऑब्जेक्ट मॉडल के फायदे और सेलेनियम में पेज फैक्ट्री का उपयोग किए बिना एक बुनियादी पीओएम डिज़ाइन पैटर्न बनाने का तरीका बताया।
आगामी ट्यूटोरियल में, हम पेज फैक्ट्री दृष्टिकोण का उपयोग करते हुए POM के एक और दृष्टिकोण पर चर्चा करेंगे।
=> सभी सेलेनियम ट्यूटोरियल यहाँ देखें।
अनुशंसित पाठ
- पेज फैक्ट्री मॉडल (POM) पेज फैक्ट्री के साथ | सेलेनियम ट्यूटोरियल
- सर्पिल मॉडल - एसडीएलसी सर्पिल मॉडल क्या है?
- ककड़ी सेलेनियम ट्यूटोरियल: ककड़ी जावा सेलेनियम वेबड्राइवर एकीकरण
- एक वेब पेज पर ड्रॉपडाउन तत्वों को संभालने के लिए सेलेनियम चयन कक्षा का उपयोग - सेलेनियम ट्यूटोरियल # 13
- सेलेनियम वेबड्राइवर का परिचय - सेलेनियम ट्यूटोरियल # 8
- क्रोमड्राइव सेलेनियम ट्यूटोरियल: क्रोम पर सेलेनियम वेबड्राइवर टेस्ट
- 30+ सर्वश्रेष्ठ सेलेनियम ट्यूटोरियल: वास्तविक उदाहरणों के साथ सेलेनियम सीखें
- सेलेनियम विशेषज्ञों के लिए पार्ट-टाइम फ्रीलांसिंग जॉब के अवसर