top 10 selenium exceptions
सेलेनियम वेबड्राइवर अपवादों को संभालना अपवाद हैंडलिंग फ्रेमवर्क का उपयोग करना - सेलेनियम ट्यूटोरियल # 19
स्वचालन कोड में अपवाद प्राप्त करना बहुत आम है। Special अपवाद ’जैसा कि शब्द इंगित करता है, एक विशेष या असामान्य मामला है।
स्वचालन कोड निष्पादन आमतौर पर निष्पादन में अपेक्षित कई कारकों के कारण नहीं हो सकता है जैसे कि नेटवर्क स्थिरता मुद्दे, इंटरनेट मुद्दे, सर्वर स्थिरता आदि। अपर्याप्त प्रतीक्षा समय या गलत सिंटैक्स, पैरामीटर आदि के कारण हमें अपवाद मिल सकते हैं।
पिछले WebDriver ट्यूटोरियल में, हमने 3 विभिन्न प्रकार के महत्वपूर्ण वेब तत्वों के बारे में सीखा वेब टेबल्स, फ्रेम्स और डायनामिक तत्व और सेलेनियम स्क्रिप्ट में उनके हैंडलिंग तंत्र
इसमें फ्रेमवर्क ट्यूटोरियल के साथ आगे बढ़ने से पहले सेलेनियम प्रशिक्षण श्रृंखला, यहाँ इस ट्यूटोरियल में हम इसके बारे में जानेंगे अपवादों के प्रकार और जावा और सेलेनियम लिपियों में अपवादों को कैसे संभालना है । सेलेनियम लिपियों में एक अपवाद को संभालने के लिए डेवलपर्स / परीक्षक अपवाद हैंडलिंग हैंडलिंग ढांचे का उपयोग करते हैं।
आप क्या सीखेंगे:
- एक अपवाद क्या है?
- अवॉइड-हैंडल दृष्टिकोण के लाभ और नुकसान
- जावा और सेलेनियम में अपवाद के प्रकार
- संचालन अपवाद
- सेलेनियम वेबड्राइवर में सामान्य अपवाद
- सामान्य अपवादों से बचना और संभालना
- # 1) org.openqa.selenium.NoSuchElementException
- # 2) org.openqa.selenium.NoSuchWindowException
- # 3) org.openqa.selenium.NoSuchFrameException
- # 4) org.openqa.selenium.NoAlertPresentException
- # 5) org.openqa.selenium.InvalidSelectorException
- # 6) org.openqa.selenium.ElementNotVoubleException
- # 7) org.openqa.selenium.ElementNotSelectableException
- # 8) org.openqa.selenium.TimeoutException
- # 9) org.openqa.selenium.NoSuchSessionException
- # 10) org.openqa.selenium.StaleElementReferenceException
- निष्कर्ष
- अनुशंसित पाठ
एक अपवाद क्या है?
अपवाद वे घटनाएँ हैं जिनके कारण जावा प्रोग्राम अपेक्षित आउटपुट दिए बिना अचानक समाप्त हो जाता है। जावा एक ढांचा प्रदान करता है जहां उपयोगकर्ता अपवादों को संभाल सकता है।
अपवाद को संभालने की प्रक्रिया को अपवाद हैंडलिंग कहा जाता है।
अपवादों को संभालने की आवश्यकता है क्योंकि वे एक कार्यक्रम के निष्पादन के सामान्य प्रवाह को तोड़ते हैं। अपवाद से निपटने के महत्वपूर्ण इरादों में से एक इस ब्रेक को रोकना और कार्यक्रम निष्पादन जारी रखना है। कभी-कभी, आप एक निश्चित अपवाद के होने पर कुछ श्रृंखलाएँ करना चाहते हैं।
जब कोई अपवाद होता है, तो एक अपवाद ऑब्जेक्ट बनाया जाता है जिसे तकनीकी रूप से an के रूप में संदर्भित किया जाता है एक अपवाद फेंकना ' और हम जोड़ते हैं पकड़ने की कोशिश जैसे ब्लॉक,
try { // Protected code } catch (ExceptionName e) { // Catch block }
# 1) कोड का टुकड़ा जो एक अपवाद फेंक सकता है, कोशिश ब्लॉक के अंदर जोड़ा जाता है।
#दो) कैच स्टेटमेंट अपवाद को पकड़ता है और इसे एक पैरामीटर के रूप में लेता है।
# 3) जब कोई अपवाद नहीं फेंका जाता है, तो प्रयास विवरण निष्पादित किया जाता है न कि कैच स्टेटमेंट।
उदाहरण : जब गलत स्थान के कारण सेलेनियम स्क्रिप्ट विफल हो जाती है, तो डेवलपर को विफलता के कारण को समझने में सक्षम होना चाहिए और यह आसानी से प्राप्त किया जा सकता है यदि अपवाद कार्यक्रम में ठीक से नियंत्रित किया गया हो।
मेरे अनुभव में, जब भी संभव हो वेबड्राइवर अपवादों से बचने और वास्तव में असाधारण मामलों को पकड़ने की कोशिश करना सबसे अच्छा है। उन चीजों को संभालने के लिए कोशिश / पकड़ का उपयोग करें जो गलत हैं और मेरे नियंत्रण से बाहर हैं।
उन लोगों से बचें जिन्हें मैं दूसरों को पकड़ सकता हूं!
यह मेरे लिए काम करने वाली सबसे अच्छी रणनीति है।
उदाहरण के लिए, एक परीक्षण पृष्ठ पर विचार करें जो परीक्षण सर्वर पर लोड होने में सामान्य से अधिक समय लेता है। इस पृष्ठ पर कार्यवाही करते समय हमें लगातार अपवाद मिलेंगे। इसलिए, हर बार इसे पकड़ने के बजाय, हम कर सकते हैं
- एक प्रतीक्षा आदेश जोड़ें और एक अपवाद से बचने की कोशिश करें
- यदि वास्तव में एक असाधारण मामला हुआ है तो मामले में संभालने के लिए ट्राइ / कैच ’का उपयोग करें
जिससे अपवादों की संभावना कम हो जाती है।
अवॉइड-हैंडल दृष्टिकोण के लाभ और नुकसान
लाभ | नुकसान |
---|---|
1) यह दृष्टिकोण अपवाद प्राप्त करने की संभावना को कम करता है। | 1) कोडों की रेखाओं को बढ़ाता है क्योंकि आप अपवादों से बचने के लिए अतिरिक्त कोड जोड़ते हैं |
अगर एक अपवाद अभी भी पकड़ा गया है 2) वास्तव में एक असाधारण मामला होगा जो जाँच के लायक है | 2) वेब ड्राइवर एपीआई, कमांड और अपवादों की बेहतर समझ होनी चाहिए |
डिबगिंग का समय कम करें। स्वचालन कोड का उद्देश्य बगों को ढूंढना है और आप बहुत से अवांछित 3) अपवादों को नहीं देखना चाहते हैं और उनमें से प्रत्येक के पीछे के कारणों का पता लगाना चाहते हैं। | |
4) कैच ब्लॉक में, आप अधिक वैध मामलों से निपटते हैं | |
5) झूठी असफलताओं को कम करें | |
6) क्लीयर रिपोर्ट |
इस ट्यूटोरियल में हम चर्चा करेंगे परहेज-और-संभाल सेलेनियम वेबड्राइवर में 10 सबसे आम अपवादों के लिए दृष्टिकोण। इससे पहले, आइए अपवाद अपवाद और कोशिश / पकड़ ब्लॉक की एक बुनियादी समझ प्राप्त करें।
जावा और सेलेनियम में अपवाद के प्रकार
नीचे हमने अपवादों के प्रकार और विभिन्न तरीकों का वर्णन किया है कि हम सेलेनियम लिपियों में अपवाद हैंडलिंग ढांचे का उपयोग कैसे कर सकते हैं।
तीन प्रकार के अपवाद हैं:
- अपवाद की जाँच की
- अनियंत्रित अपवाद
- त्रुटि
अपवाद और त्रुटि का वर्ग पदानुक्रम:
(1) जाँच अपवाद: संकलित समय के दौरान चेक किए गए अपवाद को संभाला जाता है और संकलन समय के दौरान इसे पकड़ा और संभाला नहीं जाता है तो यह संकलन त्रुटि देता है।
उदाहरण : FileNotFoundException , IOException आदि।
# 2) अनियंत्रित अपवाद: अनियंत्रित अपवाद के मामले में, एक संकलक को संभालना अनिवार्य नहीं है। संकलक संकलन समय के दौरान अनदेखा करता है।
उदाहरण : ArrayIndexoutOfBoundException
# 3) गलती: जब कोई परिदृश्य घातक होता है और प्रोग्राम ठीक नहीं हो पाता है तो JVM एक त्रुटि फेंकता है। त्रुटियों को पकड़ने की कोशिश ब्लॉक द्वारा नियंत्रित नहीं किया जा सकता है। भले ही उपयोगकर्ता ट्राई कैच ब्लॉक का उपयोग करके त्रुटि को संभालने की कोशिश करता है, लेकिन यह त्रुटि से उबर नहीं सकता है।
उदाहरण : अभिकथन त्रुटि , बाहर स्मृति त्रुटि आदि।
संचालन अपवाद
कोशिश करो और पकड़ो ब्लॉक:
पकड़ने की कोशिश ब्लॉक आमतौर पर अपवादों को संभालने के लिए उपयोग किए जाते हैं। कैच ब्लॉक में अपवादों का प्रकार घोषित किया गया है जो आने की उम्मीद है। जब कोई अपवाद कोशिश ब्लॉक में आता है, तो ब्लॉक को पकड़ने के लिए तुरंत नियंत्रण चलता है।
उदाहरण :
try { br = new BufferedReader(new FileReader('Data')); } catch(IOException ie) { ie.printStackTrace(); }
अपवाद के प्रकार के आधार पर एक कोशिश ब्लॉक के लिए कई कैच ब्लॉक हो सकते हैं।
उदाहरण :
try { br = new BufferedReader(new FileReader('Data')); } catch(IOException ie) { ie.printStackTrace(); } catch(FileNotFoundException file){ file.printStackTrace(); }
फेंकता अपवाद:
फेंकता जावा में कीवर्ड का उपयोग इसे संभालने के बजाय एक अपवाद को फेंकने के लिए किया जाता है। सभी जाँच अपवादों को विधियों द्वारा फेंका जा सकता है।
उदाहरण :
public static void main(String() args) throws IOException { BufferedReader br=new BufferedReader(new FileReader('Data')); while ((line = br.readLine()) != null) { System.out.println(line); } }
आखिरकार खंड मैथा:
आखिरकार , ब्लॉक ट्राइ-कैच ब्लॉक के निष्पादन के बावजूद निष्पादित होता है और यह कोशिश / कैच ब्लॉक पूरा होने के तुरंत बाद निष्पादित होता है।
मूल रूप से फ़ाइल बंद, डेटाबेस कनेक्शन आदि को अंततः ब्लॉक में बंद किया जा सकता है।
उदाहरण :
try { br = new BufferedReader(new FileReader('Data')); } catch(IOException ie) { ie.printStackTrace(); } Finally { br.close(); }
उपरोक्त उदाहरण में, बफरर अंत में ब्लॉक में धारा बंद है। br.close () हमेशा प्रयास के निष्पादन के बावजूद निष्पादित करेगा और ब्लॉक को पकड़ लेगा।
ध्यान दें : अंत में किसी भी पकड़ ब्लॉक के बिना ब्लॉक मौजूद हो सकता है। हमेशा एक कैच ब्लॉक होना आवश्यक नहीं है।
कई कैच ब्लॉक हो सकते हैं लेकिन केवल एक अंततः ब्लॉक का उपयोग किया जा सकता है।
फेंकने योग्य : थ्रोबेबल त्रुटि और अपवाद के लिए एक मूल वर्ग है। आम तौर पर, जावा में त्रुटियों को संभालना मुश्किल है। यदि एक प्रोग्रामर त्रुटि और अपवाद के प्रकार के बारे में निश्चित नहीं है, तो यह सलाह दी जाती है कि आप थ्रोबेबल क्लास का उपयोग करें जो त्रुटि और अपवाद दोनों को पकड़ सकता है।
उदाहरण :
try { br = new BufferedReader(new FileReader('Data')); } catch (Throwable t) { t.printStackTrace(); }
सेलेनियम वेबड्राइवर में सामान्य अपवाद
सेलेनियम के अपने स्वयं के अपवाद हैं। सेलेनियम स्क्रिप्ट विकसित करते समय, एक प्रोग्रामर को उन अपवादों को संभालना या फेंकना पड़ता है।
सेलेनियम में अपवादों के कुछ उदाहरण नीचे दिए गए हैं:
सेलेनियम वेबड्राइवर में सभी रनटाइम अपवाद कक्षाएं सुपरक्लास वेबड्राइवर अपवाद के अंतर्गत आती हैं।
हालाँकि WebDriverException के अंतर्गत कई Exception क्लासेस हैं, हम सामान्यतः नीचे वाले देखते हैं।
- NoSuchElementException
- NoSuchWindowException
- NoSuchFrameException
- NoAlertPresentException
- अमान्य
- ElementNotVoubleException
- ElementNotSelectableException
- समयबाह्य अपवाद
- NoSuchSessionException
- StaleElementReferenceException
विवरण :
ElementNotVoubleException : यदि सेलेनियम एक तत्व को खोजने की कोशिश करता है, लेकिन पृष्ठ के भीतर तत्व दिखाई नहीं देता है
NoAlertPresentException : यदि कोई उपयोगकर्ता अलर्ट बॉक्स को संभालने की कोशिश करता है लेकिन अलर्ट मौजूद नहीं है।
NoSuchAttributeException : विशेषता मान प्राप्त करने का प्रयास करते समय लेकिन विशेषता DOM में उपलब्ध नहीं है।
NoSuchElementException : यह अपवाद एक तत्व तक पहुंचने के कारण है जो पृष्ठ पर उपलब्ध नहीं है।
WebDriverException : अपवाद तब आता है जब कोई कोड WebDriver को प्रारंभ करने में असमर्थ होता है।
सामान्य अपवादों से बचना और संभालना
उपर्युक्त अपवादों के लिए टाल-एंड-हैंडल दृष्टिकोण पर चर्चा करें:
# 1) org.openqa.selenium.NoSuchElementException
यह आमतौर पर देखा जाने वाला अपवाद वर्ग का उपवर्ग है NotFoundException कक्षा। अपवाद तब होता है जब WebDriver तत्वों को खोजने और खोजने में असमर्थ होता है।
आमतौर पर, ऐसा तब होता है, जब परीक्षक खोजक (बाय बाय) पद्धति में गलत तत्व लोकेटर लिखता है।
इस बात पर विचार करें कि नीचे दिए गए उदाहरण में, टेक्स्ट फ़ील्ड के लिए सही आईडी ’फर्स्टफील्ड’ थी, लेकिन परीक्षक ने इसे। फ़िस्टफ़ील्ड ’के रूप में गलत उल्लेख किया था। इस स्थिति में, WebDriver तत्व का पता नहीं लगा सकता है और org.openqa.selenium.NoSuchElementException फेंक दिया जाएगा
driver.findElement(By.id('submit')).click(); Exception Handling: try { driver.findElement(By.id('submit')).click(); } catch (NoSuchElementException e)
इस मामले में, तत्व लोड नहीं होने पर भी अपवाद को फेंक दिया जाता है।
परहेज-और-संभाल : प्रतीक्षा आदेश देने का प्रयास करें।
उदाहरण: आईडी। सबमिट ’के साथ वेब एलिमेंट की मौजूदगी के लिए 10 सेकंड से नीचे का वेट कमांड प्रतीक्षा करता है। फिर इसे क्लिक करने की कोशिश करता है। यदि तत्व उपलब्ध है, लेकिन फिर भी क्लिक विफल रहता है, तो एक अपवाद पकड़ा गया है।
विलंबित समय का उपयोग करना परीक्षण स्वचालन में कदमों के बीच एक ठहराव बनाने के लिए एक आम बात है। एक कोशिश / पकड़ जोड़कर हम यह सुनिश्चित करते हैं कि प्रतीक्षा जारी रहने पर भी कार्यक्रम जारी रहेगा।
try { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions.presenceOfElementLocated(By.id('submit'))); try { driver.findElement(By.id('submit')).click(); } catch (WebDriverException e) { System.out.println(“An exceptional case.”); } } catch (TimeOutException e) { System.out.println(“WebDriver couldn’t locate the element”); }
# 2) org.openqa.selenium.NoSuchWindowException
NoSuchWindowException के तहत आता है NotFoundException कक्षा। यह तब फेंका जाता है जब WebDriver एक अमान्य विंडो पर स्विच करने का प्रयास करता है।
यदि विंडो हैंडल मौजूद नहीं है या स्विच करने के लिए उपलब्ध नहीं है, तो नीचे वाला कोड org.openqa.selenium.NoSuchWindowException फेंक सकता है।
Driver.switchTo ()। window (handle_1);
परहेज-और-संभाल : हम सक्रिय विंडो का सेट पाने के लिए विंडो हैंडल का उपयोग करेंगे और फिर उसी पर कार्रवाई करेंगे।
नीचे दिए गए उदाहरण में, प्रत्येक विंडो हैंडल के लिए, ड्राइवर स्विच को निष्पादित किया जाता है। इसलिए गलत विंडो पैरामीटर पास होने की संभावना कम हो जाती है।
for (String handle : driver.getWindowHandles()) { try { driver.switchTo().window(handle); } catch (NoSuchWindowException e) { System.out.println(“An exceptional case”); } }
# 3) org.openqa.selenium.NoSuchFrameException
जब WebDriver एक अमान्य फ़्रेम पर स्विच करने का प्रयास कर रहा है, तो NotSuchFrameException NotFoundException वर्ग के तहत फेंका गया है।
यदि फ्रेम 'फ्रेम_11' मौजूद नहीं है या उपलब्ध नहीं है, तो नीचे दिया गया कोड org.openqa.selenium.NoSuchFrameException को फेंक सकता है।
Driver.switchTo ()। फ्रेम ('फ्रेम_11');
संचालन अपवाद:
try { driver.switchTo().frame('frame_11'); } catch (NoSuchFrameException e)
इस मामले में, फ्रेम लोड नहीं होने पर भी अपवाद को फेंक दिया जाता है।
परहेज-और-संभाल : प्रतीक्षा आदेश देने का प्रयास करें।
नीचे दिए गए उदाहरण में, WebDriver फ्रेम उपलब्ध होने के लिए 10 सेकंड इंतजार करता है। यदि फ्रेम उपलब्ध है और फिर भी कोई अपवाद है, तो वह पकड़ा जाता है।
try { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions.frameToBeAvaliableAndSwitchToIt(frame_11)); try { driver.switchTo().frame('frame_11'); } catch (WebDriverException e) { System.out.println(“An exceptional case”); } } catch (TimeOutException e) { System.out.println(“WebDriver couldn’t locate the frame”); }
# 4) org.openqa.selenium.NoAlertPresentException
NoAlertPresentException के अंतर्गत NotFoundException जब WebDriver किसी अलर्ट पर स्विच करने का प्रयास करता है, जो उपलब्ध नहीं है, तो इसे फेंक दिया जाता है।
org.openqa.selenium.NoAlertPresentException फेंक दिया जाएगा यदि नीचे स्वचालन कोड कॉल स्वीकार करते हैं () अलर्ट पर ऑपरेशन () वर्ग जब एक चेतावनी स्क्रीन पर अभी तक नहीं है।
Driver.switchTo ()। alert ()। Accept ();
संचालन अपवाद:
try { driver.switchTo().alert().accept(); } catch (NoSuchAlertException e)
इस मामले में, अपवाद पूरी तरह से लोड नहीं होने पर भी अपवाद को फेंक दिया जाता है।
परहेज-और-संभाल : हमेशा उन मामलों में एक विशेष समय के लिए स्पष्ट या धाराप्रवाह इंतजार का उपयोग करें जहां एक चेतावनी की उम्मीद है। यदि अलर्ट उपलब्ध है और फिर भी कोई अपवाद है, तो वह पकड़ा जाता है।
try { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions.alertIsPresent()); try { driver.switchTo().alert().accept(); } catch (NoAlertPresentException e) { System.out.println(“An exceptional case”); } } catch (TimeOutException e) System.out.println(“WebDriver couldn’t locate the Alert”); }
# 5) org.openqa.selenium.InvalidSelectorException
का यह उपवर्ग NoSuchElementException वर्ग तब होता है जब चयनकर्ता गलत या वाक्यगत रूप से अमान्य होता है। यह अपवाद तब होता है जब XPATH लोकेटर का उपयोग किया जाता है।
नीचे दिए गए उदाहरण पर विचार करें:
clickXPathButtonAndWait ('// बटन (@ type = 'बटन') (100) ');
यह एक InvalidSelectorExeption फेंक देगा क्योंकि XPATH सिंटैक्स गलत है।
टालना और संभालना : इससे बचने के लिए, हमें उपयोग किए गए लोकेटर की जांच करनी चाहिए क्योंकि लोकेटर गलत है या सिंटैक्स गलत है। Xpath खोजने के लिए Firebug का उपयोग करना इस अपवाद को कम कर सकता है।
नीचे दिए गए कोड से पता चलता है कि ट्राय / कैच का उपयोग करके इसे कैसे संभालना है
try { clickXPathButtonAndWait('//button(@type='button')'); } catch (InvalidSelectorException e) { }
# 6) org.openqa.selenium.ElementNotVoubleException
ElementNotVoubleException वर्ग एक उपवर्ग है ElementNotInteractableException कक्षा। यह अपवाद तब फेंका जाता है जब WebDriver किसी अदृश्य वेब तत्व पर कार्रवाई करने की कोशिश करता है, जिसके साथ बातचीत नहीं की जा सकती। यही है, वेब तत्व एक छिपी हुई स्थिति में है।
उदाहरण के लिए, नीचे दिए गए कोड में, यदि ‘सबमिट 'आईडी के साथ बटन का प्रकार HTML में छिपा हुआ है, org.openqa.selenium.ElementNotVoubleException फेंक दिया जाएगा।
driver.findElement(By.id('submit')).click(); Exception Handling: try { driver.findElement(By.id('submit')).click(); } catch (ElementNotVisibleException e)
इस मामले में, अपवाद को फेंक दिया जाता है, भले ही पृष्ठ पूरी तरह से लोड न हो।
परहेज-और-संभाल : इसे करने के दो तरीके हैं। हम या तो पूरी तरह से तत्व प्राप्त करने के लिए प्रतीक्षा का उपयोग कर सकते हैं।
निम्न कोड तत्व के लिए 10 सेकंड इंतजार करता है। यदि तत्व दिखाई देता है और फिर भी अपवाद फेंका जाता है, तो उसे पकड़ा जाता है।
try { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions.visibilityOfElementLocated(By.id(”submit”)); try { driver.findElement(By.id('submit')).click(); } catch (WebDriverException e) { System.out.println(“Exceptional case”); } } catch (TimeOutException e) System.out.println(“WebDriver couldn’t find this element visible”); }
# 7) org.openqa.selenium.ElementNotSelectableException
यह अपवाद के अंतर्गत आता है InvalidElementStateException कक्षा । ElementNotSelectableException इंगित करता है कि वेब तत्व वेब पेज में मौजूद है लेकिन इसे चुना नहीं जा सकता।
उदाहरण के लिए, यदि कोड 'स्विफ्ट' अक्षम है, तो नीचे दिए गए कोड ElementNotSelectableException को फेंक सकते हैं।
ड्रॉपडाउन का चयन करें = नया चुनें (driver.findElement (By.id ('स्विफ्ट')));
संचालन अपवाद:
प्रयत्न {
ड्रॉपडाउन का चयन करें = नया चुनें (driver.findElement (By.id ('स्विफ्ट')));
} पकड़ (ElementNotSelectableException e)
इस मामले में, अपवाद तब भी फेंका जाता है जब तत्व थोड़ी देर बाद सक्षम हो जाता है।
परहेज-और-संभाल : जब तक तत्व क्लिक करने योग्य नहीं हो जाता तब तक प्रतीक्षा करने के लिए हम एक प्रतीक्षा आदेश जोड़ सकते हैं। यदि कोई अपवाद अभी भी है, तो यह पकड़ा गया है।
try { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions. elementToBeClickable(By.id(”swift”)); try { Select dropdown = new Select(driver.findElement(By.id('swift'))); } catch (WebDriverException e) { System.out.println(“Exceptional case”); } } catch (TimeOutException e) System.out.println(“WebDriver found that this element was not selectable.”); }
# 8) org.openqa.selenium .TimeoutException
यह अपवाद तब होता है जब एक कमांड पूर्णता प्रतीक्षा समय से अधिक होती है। मुख्य रूप से WebDriver में वेट का उपयोग अपवाद तत्व से बचने के लिए किया जाता है।
कभी-कभी परीक्षण पृष्ठ कार्यक्रम में अगले आदेश से पहले पूरी तरह लोड नहीं हो सकता है। यदि वेबड्राइवर पेज को पूरी तरह लोड करने से पहले वेबपेज में एक तत्व खोजने की कोशिश करता है, तो इसके लिए ElementNotVoubleException अपवाद है। इस अपवाद से बचने के लिए, प्रतीक्षा आदेश जोड़े जाते हैं।
हालांकि, अगर घटक प्रतीक्षा के बाद भी लोड नहीं करते हैं, तो अपवाद org.openqa.selenium .TimeoutException फेंक दिया जाएगा।
Driver.manage ()। टाइमआउट ()। निहितार्थ (10, TimeUnit.SECONDS);
Driver.get ('https://www.softwaretestinghelp.com');
उपरोक्त कार्यक्रम में, 10 सेकंड का एक अंतर्निहित प्रतीक्षा जोड़ा जाता है। अगर पेज www.softwaretestinghelp.com 10 सेकंड में लोड नहीं होता है, फिर टाइमआउट एक्सेप्शन को फेंक दिया जाएगा।
टालना और संभालना : इससे बचने के लिए, हम प्रतीक्षा को लोड करने और समायोजित करने के लिए किसी पृष्ठ के औसत समय को मैन्युअल रूप से जांच सकते हैं
या, जब तक पेज लोड नहीं हो जाता, हम जावास्क्रिप्ट निष्पादक का उपयोग करके स्पष्ट प्रतीक्षा जोड़ सकते हैं।
नीचे दिए गए उदाहरण में, जावास्क्रिप्ट निष्पादक का उपयोग किया जाता है। पेज नेविगेशन के बाद, हम 'पूर्ण' वापस आने तक 20 सेकंड के लिए जावास्क्रिप्ट रिटर्न डॉक्यूमेंट को पहले से ही भेज देते हैं।
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30)); wait.until(webDriver -> ((JavascriptExecutor)webDriver).executeScript('return document.readyState').equals('complete')); driver.get('https://www.softwaretestinghelp.com');
# 9) org.openqa.selenium.NoSuchSessionException
WebDriver.quit () द्वारा ब्राउज़र को छोड़ने के बाद एक विधि को कॉल करने पर यह अपवाद फेंक दिया जाता है। यह वेब ब्राउज़र समस्याओं जैसे क्रैश के कारण भी हो सकता है और WebDriver ड्राइवर उदाहरण का उपयोग करके किसी भी कमांड को निष्पादित नहीं कर सकता है।
इस अपवाद को देखने के लिए, नीचे दिए गए कोड को निष्पादित किया जा सकता है।
Driver.quit ()
ड्रॉपडाउन का चयन करें = नया चुनें (driver.findElement (By.id ('स्विफ्ट')));
टालना और संभालना : सेलेनियम वेबड्राइवर टेस्टकेस को चलाने के लिए हमेशा ब्राउज़र का नवीनतम स्थिर संस्करण चुनें।
सभी परीक्षणों के पूरा होने पर Driver.quit () का उपयोग करके इस अपवाद को कम किया जा सकता है। प्रत्येक परीक्षण मामले के बाद उनका उपयोग करने की कोशिश न करें। यह उन मुद्दों को जन्म दे सकता है जब चालक का उदाहरण अशक्त होता है और आगामी परीक्षण मामले इसे बिना आरंभ किए उपयोग करने का प्रयास करते हैं।
शेल पटकथा साक्षात्कार साक्षात्कार और अनुभवी के लिए उत्तर
नीचे दिया गया कोड @BeforeSuite TestiNG एनोटेशन में WebDriver उदाहरण बनाता है और इसे @AfterSuite TestiNG एनोटेशन में नष्ट कर देता है
@BeforeSuite public void setUp() throws MalformedURLException { WebDriver driver = new FirefoxDriver(); } @AfterSuite public void testDown() { driver.quit(); }
# 10) org.openqa.selenium.StaleElementReferenceException
यह अपवाद कहता है कि एक वेब तत्व अब वेब पेज में मौजूद नहीं है।
यह त्रुटि ElementNotVoubleException के समान नहीं है।
StaleElementReferenceException को तब फेंका जाता है जब किसी विशेष वेब तत्व के लिए कोई ऑब्जेक्ट बिना किसी समस्या और प्रोग्राम के बनाया गया हो; यह तत्व अब विंडो में मौजूद नहीं है। यह हो सकता है अगर वहाँ एक था
- दूसरे पृष्ठ पर नेविगेशन
- DOM रिफ्रेश हो गया
- एक फ्रेम या खिड़की स्विच
WebElement FirstName = driver.findElement (By.id ('firstname'));
Driver.switchTo ()। window (Child_Window);
element.sendKeys ('हारून');
उपरोक्त कोड में, ऑब्जेक्ट पहले नाम बनाया गया था और फिर विंडो स्विच की गई थी। फिर, WebDriver फॉर्म फील्ड में 'हारून' टाइप करने की कोशिश करता है। इस स्थिति में StaleElementReferenceException को फेंक दिया जाता है।
टालना और संभालना : पुष्टि करें कि हम सही विंडो में कार्रवाई करने की कोशिश कर रहे हैं। DOM रिफ्रेश होने के कारण समस्या से बचने के लिए, हम डायनेमिक Xpath का उपयोग कर सकते हैं
एक और उदाहरण पर चर्चा करते हैं।
उपयोगकर्ता नाम फ़ील्ड का ‘id’ ‘username_1’ है और XPath होगा // * (@ id = 'firstname_1?) । जब आप पृष्ठ को फिर से खोलेंगे तो 'आईडी' बदल सकता है ' 'संतोष _1 1'। इस स्थिति में, परीक्षण विफल हो जाएगा क्योंकि वेबड्राइवर तत्व नहीं खोज सका। इस स्थिति में, StaleElementReferenceException को फेंक दिया जाएगा।
इस स्थिति में, हम एक गतिशील xpath का उपयोग कर सकते हैं,
try { driver.findElement(By.xpath(“//*(contains(@id,firstname’))”)).sendKeys(“Aaron”); } catch (StaleElementReferenceException e)
ऊपर के उदाहरण में डायनेमिक XPATH का उपयोग किया जाता है और यदि अपवाद अभी भी पाया जाता है, तो इसे पकड़ा जाता है।
निष्कर्ष
अपवाद हैंडलिंग प्रत्येक जावा प्रोग्राम के साथ-साथ सेलेनियम लिपि का अनिवार्य हिस्सा है। हम द्वारा मजबूत और इष्टतम कोड का निर्माण कर सकते हैं स्मार्ट तरीके से एक अपवाद को संभालना । और यह एक स्क्रिप्ट में अपवादों को संभालने के लिए एक सर्वोत्तम अभ्यास भी है जो आपको किसी कारण से किसी कार्यक्रम में विफल होने पर बेहतर रिपोर्ट देगा।
यहां हमने अपवाद हैंडलिंग की प्रक्रिया और रूपरेखा को कवर करने की कोशिश की है जिसे सेलेनियम लिपियों में लागू करना आवश्यक है।
याद रखें कि अपवाद को हमेशा संभालना अनिवार्य नहीं है पकड़ने की कोशिश खंड मैथा। आप स्क्रिप्ट में आवश्यकता के आधार पर एक अपवाद भी फेंक सकते हैं।
अपवाद के रूप में उन्हें अनदेखा नहीं किया जाना चाहिए क्योंकि वे कार्यक्रम निष्पादन को तोड़ते हैं। इस ट्यूटोरियल में, हम मैनुअल अपवादों और कोडों के माध्यम से उन्हें प्राप्त करने की संभावनाओं को कम करने के लिए अलग-अलग अपवादों और तरीकों से गुजरे।
वेट्स जोड़ना कुछ मामलों को नियंत्रित कर सकता है जैसे some NoSuchElementException some, can ElementNotFoundException some, ‘ElementNotVoubleException some।
अगला ट्यूटोरियल # 20 : आगामी ट्यूटोरियल में, हम चर्चा करेंगे विभिन्न प्रकार के परीक्षण ढाँचे उपलब्ध हैं । हम स्वचालन परीक्षण में एक विकसित ढांचे के दृष्टिकोण का उपयोग करने के पेशेवरों और विपक्षों का भी अध्ययन करेंगे। हम टेस्ट डेटा-संचालित ढांचे के बारे में विस्तार से चर्चा करेंगे।
यदि आपके पास कोई भी हो, तो सेलेनियम वेबड्राइवर में अपवाद से संबंधित अपने प्रश्नों को पोस्ट करें।
अनुशंसित पाठ
- उदाहरणों के साथ जावा अपवाद और अपवाद हैंडलिंग
- सेलेनियम वेबड्राइवर में अलर्ट / पॉपअप कैसे हैंडल करें - सेलेनियम ट्यूटोरियल # 16
- AutoIt Tutorial - AutoIt Download, Install & Basic AutoIt Script
- ककड़ी सेलेनियम ट्यूटोरियल: ककड़ी जावा सेलेनियम वेबड्राइवर एकीकरण
- जेमीटर के साथ सेलेनियम का एकीकरण
- सेलेनियम वेबड्राइवर का परिचय - सेलेनियम ट्यूटोरियल # 8
- 30+ सर्वश्रेष्ठ सेलेनियम ट्यूटोरियल: वास्तविक उदाहरणों के साथ सेलेनियम सीखें
- सेलेनियम विशेषज्ञों के लिए पार्ट-टाइम फ्रीलांसिंग जॉब के अवसर