implicit explicit wait selenium webdriver
सेलेनियम वेबड्राइवर में जानें और स्पष्ट प्रतीक्षा करें:
पिछले ट्यूटोरियल में, हमने आपको विभिन्न से परिचित कराने का प्रयास किया वेबड्राइवर के लूपिंग और सशर्त संचालन । ये सशर्त तरीके अक्सर वेब तत्वों के लिए लगभग सभी प्रकार के दृश्यता विकल्पों से निपटते हैं।
इसमें आगे बढ़ते हुए मुफ्त सेलेनियम प्रशिक्षण श्रृंखला , हम चर्चा करेंगे सेलेनियम वेबड्राइवर द्वारा प्रदान किए गए विभिन्न प्रकार के वेट । हम v के बारे में भी चर्चा करेंगे नेविगेशन विकल्पों के arious प्रकार WebDriver में उपलब्ध है।
पूरे वेब पेज को रीफ्रेश करके और नए सिरे से लोड करके अलग-अलग वेब पेजों पर फिर से निर्देशन करते समय वेट उपयोगकर्ता को समस्याओं के निवारण में मदद करते हैं वेब तत्व। कई बार अजाक्स कॉल भी हो सकते हैं। इस प्रकार, वेब पृष्ठों को पुनः लोड करते समय और वेब तत्वों को प्रतिबिंबित करते समय एक समय अंतराल देखा जा सकता है।
उपयोगकर्ता अक्सर विभिन्न वेब पेजों के माध्यम से आगे और पीछे नेविगेट करते हुए पाए जाते हैं। इस प्रकार, WebDriver द्वारा प्रदान किए गए नेविगेट () कमांड / तरीके उपयोगकर्ता को वेब ब्राउज़र के इतिहास के संदर्भ में वेब पेजों के बीच नेविगेट करके वास्तविक समय परिदृश्यों का अनुकरण करने में मदद करते हैं।
WebDriver आवर्ती पृष्ठ लोड को संभालने के लिए प्रतीक्षा के दो जीन के साथ उपयोगकर्ता को लैस करता है s, वेब एलिमेंट लोड, विंडोज़ की उपस्थिति, पॉप-अप और एरर मैसेज और वेब पेज पर वेब एलिमेंट्स का प्रतिबिंब।
- निहित प्रतीक्षा करें
- स्पष्ट प्रतीक्षा करें
आइए हम व्यावहारिक दृष्टिकोण पर विचार करते हुए उनमें से प्रत्येक पर चर्चा करें।
आप क्या सीखेंगे:
- वेबड्राइवर इंप्लिकेट वेट
- WebDriver स्पष्ट प्रतीक्षा करें
- अपेक्षित स्थिति
- वेबड्राइवर का उपयोग कर नेविगेशन
- निष्कर्ष
- अनुशंसित पाठ
वेबड्राइवर इंप्लिकेट वेट
संपूर्ण परीक्षण स्क्रिप्ट पर प्रत्येक लगातार परीक्षण चरण / आदेश के बीच डिफ़ॉल्ट प्रतीक्षा समय (30 सेकंड कहते हैं) प्रदान करने के लिए उपयोग किया जाता है। इस प्रकार, बाद में परीक्षण कदम केवल तभी निष्पादित होगा जब 30 सेकंड पिछले परीक्षण चरण / कमांड को निष्पादित करने के बाद बीत चुके हैं।
मुख्य नोट्स
- निहित प्रतीक्षा कोड की एक एकल पंक्ति है और परीक्षण स्क्रिप्ट की सेटअप विधि में घोषित की जा सकती है।
- Explicit प्रतीक्षा की तुलना में, Implicit प्रतीक्षा पारदर्शी और सीधी है। वाक्यविन्यास और दृष्टिकोण स्पष्ट प्रतीक्षा की तुलना में सरल हैं।
लागू करने के लिए आसान और सरल होने के नाते, अंतर्निहित प्रतीक्षा कुछ कमियां भी पेश करती है। यह परीक्षण स्क्रिप्ट निष्पादन समय को जन्म देता है क्योंकि निष्पादन शुरू होने से पहले प्रत्येक आदेश के लिए निर्धारित राशि का इंतजार करना बंद हो जाएगा।
इस प्रकार, इस समस्या का निवारण करने के लिए, WebDriver ने स्पष्ट प्रतीक्षा की शुरुआत की जहां हम स्पष्ट रूप से प्रतीक्षा कर सकते हैं जब भी परीक्षा के प्रत्येक चरण को निष्पादित करते समय बलपूर्वक प्रतीक्षा के बजाय स्थिति उत्पन्न होती है।
आयात विवरण
आयात java.util.concurrent.TimeUnit - हमारी परीक्षण लिपियों में निहित प्रतीक्षा तक पहुँचने और लागू करने में सक्षम होने के लिए, हम इस पैकेज को अपनी परीक्षण स्क्रिप्ट में आयात करने के लिए बाध्य हैं।
वाक्य - विन्यास
drv .manage ()। टाइमआउट ()। implicitlyWait (10, TimeUnit। सेकंड );
WebDriver उदाहरण चर की तात्कालिकता के तुरंत बाद अपने परीक्षण स्क्रिप्ट में कोड की उपरोक्त पंक्ति को शामिल करें। इस प्रकार, यह वह सब है जो आपके परीक्षण स्क्रिप्ट में निहित प्रतीक्षा सेट करने के लिए आवश्यक है।
कोड वॉकथ्रू
निहित प्रतीक्षा पैरामीटर के रूप में दो मूल्यों को पारित करने के लिए जनादेश देती है। पहला तर्क उस संख्यात्मक अंक में समय को इंगित करता है जिसे सिस्टम को प्रतीक्षा करने की आवश्यकता है। दूसरा तर्क समय मापने के पैमाने को इंगित करता है। इस प्रकार, उपरोक्त कोड में, हमने '30' सेकंड को डिफ़ॉल्ट प्रतीक्षा समय के रूप में उल्लेख किया है और समय इकाई को 'सेकंड' पर सेट किया गया है।
WebDriver स्पष्ट प्रतीक्षा करें
स्पष्ट प्रतीक्षा का उपयोग निष्पादन को रोकने के लिए किया जाता है जब तक कि किसी विशेष स्थिति को पूरा नहीं किया जाता है या अधिकतम समय बीत चुका होता है। इंप्लाट वेट के विपरीत, स्पष्ट वेट केवल एक विशेष उदाहरण के लिए लगाए जाते हैं।
WebDriver ने परीक्षण स्क्रिप्ट में स्पष्ट प्रतीक्षा को लागू करने के लिए WebDriverWait और ExpectedConditions जैसी कक्षाएं शुरू की हैं। इस चर्चा के दायरे में, हम एक नमूने के रूप में 'gmail.com' का उपयोग करेंगे।
परिदृश्य स्वचालित होने के लिए
- वेब ब्राउज़र लॉन्च करें और 'gmail.com' खोलें
- एक मान्य उपयोगकर्ता नाम दर्ज करें
- एक मान्य पासवर्ड दर्ज करें
- साइन इन बटन पर क्लिक करें
- पेज लोड होने के बाद कंपोज बटन दिखने की प्रतीक्षा करें
स्पष्ट प्रतीक्षा का उपयोग कर वेबड्राइवर कोड
कृपया ध्यान दें कि स्क्रिप्ट निर्माण के लिए, हम पूर्व ट्यूटोरियल में निर्मित 'Learning_Selenium' परियोजना का उपयोग करेंगे।
चरण 1 : 'Learning_Selenium' परियोजना के तहत एक नया जावा वर्ग बनाएं, जिसका नाम 'Wait_Demon निष्पादन' है।
चरण 2 : नीचे दिए गए कोड को 'Wait_Demon निष्पादन.java' वर्ग में कॉपी और पेस्ट करें।
नीचे परीक्षण स्क्रिप्ट है जो उपर्युक्त परिदृश्य के बराबर है।
import static org.junit.Assert.*; import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class Wait_Demonstration { // created reference variable for WebDriver WebDriver drv; @Before public void setup() throws InterruptedException { // initializing drv variable using FirefoxDriver drv=new FirefoxDriver(); // launching gmail.com on the browser drv.get('https://gmail.com'); // maximized the browser window drv.manage().window().maximize(); drv.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } @Test public void test() throws InterruptedException { // saving the GUI element reference into a 'username' variable of WebElement type WebElement username = drv.findElement(By.id('Email')); // entering username username.sendKeys('shruti.shrivastava.in'); // entering password drv.findElement(By.id('Passwd')).sendKeys('password'); // clicking signin button drv.findElement(By.id('signIn')).click(); // explicit wait - to wait for the compose button to be click-able WebDriverWait wait = new WebDriverWait(drv,30); wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath('//div(contains(text(),'COMPOSE'))'))); // click on the compose button as soon as the 'compose' button is visible drv.findElement(By.xpath('//div(contains(text(),'COMPOSE'))')).click(); } @After public void teardown() { // closes all the browser windows opened by web driver drv.quit(); } }
आयात विवरण
- आयात org। openqa.selenium.support.ui.ExpectedConditions
- आयात org। openqa.selenium.support.ui.ebDriverWait
- स्क्रिप्ट निर्माण से पहले पैकेज से ऊपर आयात करें। पैकेज ड्रॉपडाउन को संभालने के लिए जिस सेलेक्ट क्लास की आवश्यकता होती है उसका संदर्भ देते हैं।
WebDriverWait वर्ग के लिए ऑब्जेक्ट इंस्टेंटेशन
WebDriverWait प्रतीक्षा = नवीन व WebDriverWait ( drv , 30);
हम WebDriverWait वर्ग के लिए एक संदर्भ चर 'प्रतीक्षा' बनाते हैं और इसे वेबड्राइवर उदाहरण का उपयोग करके त्वरित करते हैं और छंटनी के लिए अधिकतम प्रतीक्षा समय देते हैं। उद्धृत किया गया अधिकतम प्रतीक्षा समय 'सेकंड' में मापा जाता है।
WebDriver के शुरुआती ट्यूटोरियल में WebDriver के इंस्टेंटेशन पर चर्चा की गई।
अपेक्षित स्थिति
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath('//div(contains(text(),'COMPOSE'))'))); drv.findElement(By.xpath('//div(contains(text(),'COMPOSE'))')).click();
उपरोक्त आदेश समय की एक निर्धारित मात्रा या अपेक्षित स्थिति के लिए प्रतीक्षा करता है जो भी पहले होता है या समाप्त होता है।
इस प्रकार यह करने में सक्षम होने के लिए, हम पिछले चरण में बनाई गई WebDriverWait क्लास के 'प्रतीक्षा' संदर्भ चर का उपयोग ExpectedConditions वर्ग और एक वास्तविक स्थिति के साथ करते हैं जो होने की उम्मीद है। इसलिए, जैसे ही अपेक्षित स्थिति होती है, प्रोग्राम नियंत्रण बलपूर्वक 30 सेकंड के लिए प्रतीक्षा करने के बजाय अगले निष्पादन कदम पर पहुंच जाएगा।
हमारे नमूने में, हम 'कंपोज़' बटन को होम पेज लोड के एक हिस्से के रूप में प्रस्तुत करने और लोड करने के लिए प्रतीक्षा करते हैं, और फिर हम 'कम्पोज' बटन पर क्लिक कमांड को कॉल करने के साथ आगे बढ़ते हैं।
अपेक्षित स्थितियों के प्रकार
ExpectedConditions वर्ग उन परिदृश्यों से निपटने के लिए एक बड़ी सहायता प्रदान करता है, जहां हमें वास्तविक परीक्षण चरण को निष्पादित करने से पहले होने वाली स्थिति का पता लगाना होता है।
ExpectedConditions वर्ग WebDriverWait संदर्भ चर की मदद से और () विधि की सहायता से पहुँचा जा सकता है कि अपेक्षित परिस्थितियों की एक विस्तृत श्रृंखला के साथ आता है।
आइए हम उनमें से कुछ पर चर्चा करें:
# 1) तत्वटैबक्लिक () - अपेक्षित स्थिति किसी तत्व के क्लिक करने योग्य होने का इंतजार करती है यानी इसे स्क्रीन पर मौजूद / प्रदर्शित / प्रदर्शित होने के साथ-साथ सक्षम होना चाहिए।
नमूना कोड
Wait.until (उम्मीदें '// div (समाहित है (पाठ (), 'COMPOSE'))' )));
# 2) TextToBePresentInElement () - अपेक्षित स्थिति एक निश्चित स्ट्रिंग पैटर्न वाले तत्व की प्रतीक्षा करती है।
नमूना कोड
Wait.until (उम्मीद के मुताबिक शर्तें। TxtTeBePresentInElement (By.xpath) '// div (@ id = got forgotPass ''), 'पाया जाने वाला पाठ' ));
कैसे देखें
# 3) अलर्टइंटरसेंट () - अपेक्षित स्थिति एक चेतावनी बॉक्स के सामने आने का इंतजार करती है।
नमूना कोड
Wait.until (ExpectedConditions.alertIsPresent ())! = null)
# 4) शीर्षक () - अपेक्षित स्थिति एक विशिष्ट शीर्षक वाले पृष्ठ की प्रतीक्षा करती है।
नमूना कोड
Wait.until (ExpectedConditions.titleIs () 'जीमेल लगीं' ));
# 5) फ़्रेम - अपेक्षित स्थिति एक फ्रेम के उपलब्ध होने की प्रतीक्षा करती है और फिर जैसे ही फ्रेम उपलब्ध होता है, नियंत्रण स्वचालित रूप से उसमें बदल जाता है।
नमूना कोड
Wait.until (ExpectedConditions.frameToBeAvailableAndSwitchToIt (बायिड (' नया समय ')));
एक बहुत ही सामान्य उपयोगकर्ता क्रिया है जहाँ उपयोगकर्ता ब्राउज़र के इतिहास के वर्तमान सत्र में देखे गए विभिन्न वेब पृष्ठों पर नेविगेट करने के लिए वेब ब्राउज़र के पीछे और आगे बटन पर क्लिक करता है। इस प्रकार उपयोगकर्ताओं द्वारा किए गए ऐसे कार्यों का अनुकरण करने के लिए, वेबड्राइवर नेवीट कमांड का परिचय देता है।
आइए इन आदेशों की विस्तार से जाँच करें:
# 1) नेविगेट करें ()। पीछे ()
यह कमांड उपयोगकर्ता को पिछले वेब पेज पर नेविगेट करने की सुविधा देता है।
नमूना कोड:
Driver.navigate (); बैक ();
उपरोक्त आदेश के लिए किसी पैरामीटर की आवश्यकता नहीं है और उपयोगकर्ता को वेब ब्राउज़र के इतिहास में पिछले वेबपेज पर वापस ले जाता है।
# 2) नेविगेट करें ()। फ़ॉरवर्ड ()
यह कमांड उपयोगकर्ता को ब्राउज़र के इतिहास के संदर्भ में अगले वेब पेज पर जाने देता है।
नमूना कोड:
Driver.navigate (); फ़ॉरवर्ड ();
उपरोक्त कमांड के लिए किसी पैरामीटर की आवश्यकता नहीं है और यह उपयोगकर्ता को वेब ब्राउज़र के इतिहास में अगले वेबपेज पर ले जाता है।
# 3) नेविगेट करें () ताज़ा करें ()
यह कमांड उपयोगकर्ता को वर्तमान वेब पेज को रीफ्रेश करने देता है जिससे सभी वेब तत्व पुनः लोड हो रहे हैं।
नमूना कोड:
Driver.navigate (); ताज़ा करें ();
उपरोक्त कमांड के लिए कोई पैरामीटर नहीं है और वेब पेज को फिर से लोड करना है।
# 4) नेविगेट ()। से ()
यह कमांड उपयोगकर्ता को एक नई वेब ब्राउज़र विंडो लॉन्च करने और निर्दिष्ट URL पर नेविगेट करने देता है।
नमूना कोड:
Driver.navigate (), से ('http://google.com');
उपरोक्त कमांड के लिए एक पैरामीटर के रूप में एक वेब URL की आवश्यकता होती है और फिर यह नए सिरे से लॉन्च किए गए वेब ब्राउज़र में निर्दिष्ट URL को खोलता है।
निष्कर्ष
इस में सेलेनियम वेबड्राइवर ट्यूटोरियल में निहित और स्पष्ट प्रतीक्षा करें , हमने आपको WebDriver के इंतजार से परिचित कराने का प्रयास किया। हमने स्पष्ट और निहित प्रतीक्षा की चर्चा की और अभ्यास किया। उसी समय, हमने विभिन्न नेविगेट कमांड्स पर भी चर्चा की।
यहाँ इस लेख के क्रूक्स हैं:
- वेबड्राइवर उपयोगकर्ता को उन स्थितियों के बीच चयन करने में सक्षम बनाता है जो उन स्थितियों को संभालने के लिए होती हैं जहाँ निष्पादन प्रवाह को वेब तत्वों को लोड करने या किसी विशिष्ट स्थिति को पूरा करने के लिए कुछ सेकंड के लिए नींद की आवश्यकता हो सकती है। WebDriver में दो तरह के वेट उपलब्ध हैं।
- निहित प्रतीक्षा करें
- स्पष्ट प्रतीक्षा करें
- अधूरा इंतजार करता है पूरे परीक्षण स्क्रिप्ट में प्रत्येक लगातार परीक्षण चरण / कमांड के बीच एक डिफ़ॉल्ट प्रतीक्षा समय प्रदान करने के लिए उपयोग किया जाता है। इस प्रकार, बाद का परीक्षण कदम केवल तभी निष्पादित होगा जब पिछले परीक्षण चरण / आदेश को निष्पादित करने के बाद निर्दिष्ट समय समाप्त हो गया हो।
- स्पष्ट प्रतीक्षा करता है निष्पादन को रोकने के लिए तब तक उपयोग किया जाता है जब तक कि कोई विशेष स्थिति पूरी न हो जाए या अधिकतम समय बीत न जाए। इंप्लाट वेट के विपरीत, स्पष्ट वेट केवल एक विशेष उदाहरण के लिए लगाए जाते हैं।
- वेबड्राइवर स्पष्ट प्रतीक्षा को लागू करने के लिए WebDriverWait और ExpectedConditions जैसी कक्षाएं शुरू करता है
- उम्मीदें हैं कक्षा उन परिदृश्यों से निपटने के लिए एक बड़ी मदद प्रदान करती है जहाँ हमें वास्तविक परीक्षण चरण को निष्पादित करने से पहले होने वाली स्थिति का पता लगाना होता है।
- ExpectedConditions वर्ग WebDriverWait संदर्भ चर की मदद से और () विधि की सहायता से पहुँचा जा सकता है कि अपेक्षित परिस्थितियों की एक विस्तृत श्रृंखला के साथ आता है।
- नेविगेट () विधियों / कमांड का उपयोग उपयोगकर्ता के व्यवहार को अनुकरण करने के लिए किया जाता है, जबकि विभिन्न वेब पेजों के बीच में नेविगेट करते हुए।
अगला ट्यूटोरियल # 16 : सूची में अगले ट्यूटोरियल के लिए आ रहा है, हम उपयोगकर्ताओं को विभिन्न प्रकार के अलर्टों से परिचित कराएंगे जो वेबसाइटों तक पहुंचने और वेबड्राइवर में उनके हैंडलिंग दृष्टिकोणों के बारे में बता सकते हैं। जिन अलर्टों पर हम ध्यान केंद्रित कर रहे हैं, वे प्रमुख रूप से हैं - विंडोज़ आधारित अलर्ट पॉप-अप और वेब-आधारित अलर्ट पॉप-अप। जैसा कि हम जानते हैं कि विंडोज़ आधारित पॉप-अप्स को संभालना वेबड्राइवर की क्षमताओं से परे है, इसलिए हम विंडो पॉप-अप्स को संभालने के लिए कुछ थर्ड पार्टी यूटिलिटीज का भी उपयोग करेंगे।
पाठकों के लिए ध्यान दें : तब तक, पाठक विभिन्न पृष्ठ भार और गतिशील तत्वों के परिदृश्यों को स्वचालित कर सकते हैं और विभिन्न अपेक्षित स्थितियों का उपयोग करके स्क्रीन पर पॉप अप कर सकते हैं और कमांड्स नेविगेट कर सकते हैं।
अनुशंसित पाठ
- ककड़ी सेलेनियम ट्यूटोरियल: ककड़ी जावा सेलेनियम वेबड्राइवर एकीकरण
- सेलेनियम वेबड्राइवर का परिचय - सेलेनियम ट्यूटोरियल # 8
- हमारी पहली वेबड्राइवर स्क्रिप्ट का कार्यान्वयन - सेलेनियम वेबड्राइवर ट्यूटोरियल # 10
- सेलेनियम पूछे जाने वाले प्रश्न
- सेलेनियम वेबड्राइवर में अलर्ट / पॉपअप कैसे हैंडल करें - सेलेनियम ट्यूटोरियल # 16
- गाइड सेलेनियम वेबड्राइवर में अत्यधिक रिपोर्ट उत्पन्न करने के लिए
- अलग लोकप्रिय ब्राउज़रों में सेलेनियम वेबड्राइवर कैसे चलाएं
- वेबड्राइवर संपूर्ण सेटअप और स्थापना ग्रहण के साथ - सेलेनियम ट्यूटोरियल # 9