स्क्रिप्ट को समानांतर में कैसे चलाना है, यह समझने के लिए, आइए पहले समझते हैं
हमें सत्र संचालन की आवश्यकता क्यों है?
परीक्षण निष्पादन के दौरान, सेलेनियम वेबड्राइवर को दिए गए कमांड को निष्पादित करने के लिए हर समय ब्राउज़र के साथ बातचीत करनी होती है। निष्पादन के समय, यह भी संभव है कि, वर्तमान निष्पादन पूरा होने से पहले, कोई अन्य व्यक्ति उसी मशीन में और उसी प्रकार के ब्राउज़र में किसी अन्य स्क्रिप्ट का निष्पादन शुरू कर दे।
ऐसी स्थिति में, हमें एक ऐसे तंत्र की आवश्यकता है जिसके द्वारा हमारे दो अलग-अलग निष्पादन एक दूसरे के साथ ओवरलैप न हों। इसे सेलेनियम में सत्र हैंडलिंग का उपयोग करके प्राप्त किया जा सकता है।
सेलेनियम वेबड्राइवर में सत्र हैंडलिंग कैसे प्राप्त करें?
यदि आप सेलेनियम वेबड्राइवर के स्रोत कोड की जांच करते हैं, तो आपको 'sessionId' नामक एक चर मिलेगा। जब भी हम एक WebDriver ऑब्जेक्ट का एक नया उदाहरण बनाते हैं, तो एक नया 'sessionId' उत्पन्न होगा और उस विशेष फ़ायरफ़ॉक्स / क्रोम / IE ड्राइवर () के साथ संलग्न किया जाएगा।
इसके बाद हम जो कुछ भी करते हैं, वह केवल उस विशेष फ़ायरफ़ॉक्स ब्राउज़र सत्र में निष्पादित होगा।
जैसा कि यह एक अंतर्निहित कार्यक्षमता है, सत्र आईडी को निर्दिष्ट करने की कोई स्पष्ट आवश्यकता नहीं है
कोड उदाहरण: यहां दो अलग-अलग सत्र दो अलग-अलग वेबड्राइवर के लिए तैयार किए जाएंगे।
आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.firefox.FirefoxDriver;सार्वजनिक वर्ग सत्रहैंडलिंग {सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग… स्ट्रिंग्स) {// वेबड्राइवर का पहला सत्रWebDriver ड्राइवर = नया FirefoxDriver ();// गोटो गुरु 99 साइटDriver.get ("http://demo.guru99.com/V4/");// वेबड्राइवर का दूसरा सत्रWebDriver driver2 = नया FirefoxDriver ();// गोटो गुरु 99 साइटDriver2.get ("http://demo.guru99.com/V4/");}}
सेलेनियम के साथ समानांतर टेस्ट कैसे चलाएं
ऐसी परिस्थितियां हैं जहां आप एक ही समय में कई परीक्षण चलाना चाहते हैं।
ऐसे मामलों में, कोई "समानांतर" विशेषता का उपयोग कर सकता है
सुइट टैग की समानांतर विशेषता चार मूल्यों को स्वीकार कर सकती है:
परीक्षण | सभी परीक्षण मामलों के अंदर <परीक्षण> टेस्टिंग xml फ़ाइल का टैग समानांतर चलेगा। |
कक्षाओं | एक जावा वर्ग के अंदर सभी परीक्षण मामले समानांतर चलेंगे |
तरीकों | @Test एनोटेशन वाली सभी विधियां समानांतर रूप से निष्पादित होंगी। |
उदाहरणों | एक ही उदाहरण में परीक्षण के मामले समानांतर निष्पादित होंगे लेकिन दो अलग-अलग उदाहरणों के दो तरीके अलग-अलग धागे में चलेंगे। |
विशेषता थ्रेड-काउंट आपको यह निर्दिष्ट करने की अनुमति देता है कि इस निष्पादन के लिए कितने थ्रेड आवंटित किए जाने चाहिए।
पूरा उदाहरण: इस उदाहरण में, तीन परीक्षण मामले समानांतर चलेंगे और http://demo.guru99.com में लॉगिन डेटा भरेंगे
पूर्ण परियोजना की तरह दिखेगा:
TestGuru99MultipleSession.java
आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.chrome.ChromeDriver;आयात org.testng.annotations.Test;सार्वजनिक वर्ग TestGuru99Multiple सत्र {@परीक्षासार्वजनिक शून्य निष्पादन// वेबड्राइवर का पहला सत्रSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver ड्राइवर = नया ChromeDriver ();// गोटो गुरु 99 साइटDriver.get ("http://demo.guru99.com/V4/");// उपयोगकर्ता नाम टेक्स्ट बॉक्स ढूंढें और इसे भरेंDriver.findElement (By.name ("uid"))। sendKeys ("ड्राइवर 1");}@परीक्षासार्वजनिक शून्य निष्पादन// वेबड्राइवर का दूसरा सत्रSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver ड्राइवर = नया ChromeDriver ();// गोटो गुरु 99 साइटDriver.get ("http://demo.guru99.com/V4/");// उपयोगकर्ता नाम टेक्स्ट बॉक्स ढूंढें और इसे भरेंDriver.findElement (By.name ("uid"))। sendKeys ("ड्राइवर 2");}@परीक्षासार्वजनिक शून्य निष्पादन// वेबड्राइवर का तीसरा सत्रSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver ड्राइवर = नया ChromeDriver ();// गोटो गुरु 99 साइटDriver.get ("http://demo.guru99.com/V4/");// उपयोगकर्ता नाम टेक्स्ट बॉक्स ढूंढें और इसे भरेंDriver.findElement (By.name ("uid"))। sendKeys ("ड्राइवर 3");}}
TestNG.XML
xml संस्करण = "1.0" एन्कोडिंग = "UTF-8"?><सूट का नाम = "टेस्टसुइट" थ्रेड-काउंट = "3" समानांतर = "विधियाँ"><परीक्षण नाम = "टेस्टगुरु"><कक्षाएं><वर्ग नाम = "TestGuru99MultipleSession"> वर्ग> कक्षाएं> परीक्षण> सूट>
टेस्ट केस ऑर्डर और डिपेंडेंसी
आप टेस्ट केस निष्पादन के आदेश और निर्भरता निर्धारित कर सकते हैं।
मान लें कि आपके पास दो परीक्षण मामले हैं, 'testGuru99TC1' और 'testGuru99TC2' और आप 'testGuru99TC2' से पहले 'testGuru99TC2' परीक्षण मामले को निष्पादित करना चाहते हैं। उस स्थिति में हम निर्भरता और निष्पादन की व्यवस्था बनाने के लिए 'dependonesMethods' विशेषता का उपयोग करेंगे।
xml संस्करण = "1.0" एन्कोडिंग = "UTF-8"?><सूट का नाम = "टेस्टसुइट" थ्रेड-काउंट = "3" समानांतर = "विधियाँ"><परीक्षण नाम = "टेस्टगुरु"><कक्षाएं><वर्ग नाम = "TestGuru99MultipleSession"><मान = "testGuru99TC1" निर्भर करता है शामिल हैंOnMethods = "testGuru99TC2" /><मूल्य = "testGuru99TC2" /> शामिल करें वर्ग> कक्षाएं> परीक्षण> सूट>
सारांश
- WebDriver के एक नए उदाहरण के लिए एक नया सेशन बनाया जाता है।
- एक सत्र एक विशेष ब्राउज़र के साथ बंधेगा।
- विशेषता थ्रेड और समानांतर का उपयोग करके, आप अपनी स्क्रिप्ट को समानांतर में चलाते हैं।
- आप निष्पादन का परीक्षण करने के लिए आदेश सेट करने के लिए विशेषता निर्भरता का उपयोग कर सकते हैं