protractor testing tool
प्रोटेक्टर क्या है?
प्रोटेक्टर वेब अनुप्रयोगों के परीक्षण के लिए एक स्वचालन परीक्षण उपकरण है; जैस्मीन, सेलेनियम वेबड्राइवर, Node.js आदि जैसी शक्तिशाली तकनीकों का संयोजन।
प्रोटेक्टर परीक्षण उपकरण एंगुलर जेएस अनुप्रयोगों को ध्यान में रखते हुए व्यवहार-संचालित परीक्षण रूपरेखा का अंत है। भले ही यह गैर-कोणीय जेएस अनुप्रयोगों के साथ प्रोट्रैक्टर की तरह काम नहीं करता हो, ऐसा लगता है।
यह दोनों कोणीय और गैर-कोणीय जेएस अनुप्रयोगों के साथ समान रूप से अच्छी तरह से काम करता है।
महसूस करने के लिए स्वतंत्र महसूस करें ट्यूटोरियल की पूरी AngularJS श्रृंखला । हमारे पिछले ट्यूटोरियल में, कोणीय संस्करणों के बीच अंतर विस्तार से बताया गया।
आप क्या सीखेंगे:
- प्रोटेक्टर बनाम सेलेनियम वेबड्राइवर
- विशेषताएं
- प्रोटेक्टर मेरी मदद कैसे कर सकता है?
- किस फ्रेमवर्क का उपयोग करें?
- कैसे डाउनलोड और सेटअप प्रोटेक्टर
- अपना पहला टेस्ट केस बनाने के लिए तैयार हैं?
- अपने परीक्षण मामलों को कैसे चलाएं?
- प्रोट्रैक्टर की कुछ और बेहतरीन विशेषताएं
- निष्कर्ष
- अनुशंसित पाठ
प्रोटेक्टर बनाम सेलेनियम वेबड्राइवर
क्या प्रोटेक्टर पारंपरिक से अलग है सेलेनियम वेबड्राइवर ?
इन सवालों के जवाब देने के लिए एक मिनट निकालें:
- क्या यह निर्धारित करने के लिए संघर्ष है कि वास्तव में वेब पेज आखिर लोड कब है (सभी अतुल्यकालिक तत्व तैयार हैं और संसाधित किए गए हैं)?
- क्या आप अपने कोड में वेट और स्लीप जोड़कर थक गए हैं?
- क्या आप कोणीय तत्वों का पता लगाने के बोझिल प्रयास से छुटकारा पाना चाहते हैं?
- बदलते Ids के साथ तत्वों का पता लगाने से निराश?
- क्या आप अपना लोकेटर बनाना चाहते हैं?
- क्या आप सरलतम कथनों के लिए भी लंबा कोड लिख रहे हैं?
- क्या आप एक जावास्क्रिप्ट उत्साही / प्रशंसक हैं?
यदि आपने इन प्रश्नों का उत्तर हां में दिया है, चांदा मदद कर सकते है।
यह सेलेनियम वेबड्राइवर के शीर्ष पर बना एक आवरण है और इस प्रकार, कई उपयोगी प्रस्तुतियों के साथ सेलेनियम की सभी क्षमताओं को प्रदान करता है। यह पेशकश करता है:
विशेषताएं
यह पेशकश करता है:
1) WaitForAngular
c ++ से कितना अलग है
प्रलेखन से:
' वेबड्राइवर को निर्देश दें कि जब तक एंगुलर ने रेंडरिंग खत्म नहीं कर ली है और जारी रखने से पहले कोई बकाया $ http या $ टाइमआउट कॉल न करें। ध्यान दें कि प्रोटेक्टर हर WebDriver एक्शन से पहले स्वचालित रूप से इस कमांड को लागू करता है। '
इसका मतलब यह है कि मैन्युअल रूप से अपनी स्क्रिप्ट में वेट जोड़ने की आवश्यकता नहीं है और प्रोट्रैक्टर स्वचालित रूप से वेब तत्वों को लोड करने के लिए इंतजार करेगा और उसके बाद ही अगले चरणों को निष्पादित करेगा।
दो) इसमें वैश्विक समारोह को निर्यात करने की क्षमता है तत्त्व , जो एक लोकेटर लेता है और एक एलिमेंटफाइंडर को लौटा देगा। इस एलीमेंटफ़ाइंडर में एक्शन विधियों का एक सेट है, जैसे कि क्लिक (), गेटटेक्स्ट (), सेंडकेय () आदि। यह मूल है कि तत्व के साथ बातचीत कैसे करें और इससे जानकारी प्राप्त करें।
यह वैश्विक फ़ंक्शन सिंटैक्स को खोजने वाले तत्व को कम करने में मदद करता है। सेलेनियम वेबड्राइवर और प्रोट्रैक्टर दोनों में तत्व का पता लगाने के लिए निम्नलिखित कथन पर एक नज़र डालें:
सेलेनियम वेबड्राइवर :
driver.findElement(By.cssSelector('css selector'));
चांदा :
element(by.css('some-css'));
वाक्यविन्यास कॉम्पैक्ट दिखता है, क्या यह नहीं है?
3) कोणीय तत्वों का पता लगाने में मदद करने के लिए प्रदान की गई कुछ नई लोकेटर रणनीतियों और कार्य हैं: By.binding, By.repeater, By.textarea, By.model, WebElement.all, WebElement.ev मूल्यांकन , आदि।
प्रोटेक्टर मेरी मदद कैसे कर सकता है?
निम्नलिखित मुख्य विशेषताओं पर एक नज़र डालें:
- परीक्षण मामलों को लिखने के लिए सरल वाक्यविन्यास
- सेलेनियम ग्रिड का उपयोग करते हुए एक बार में कई ब्राउज़र चलाने की क्षमता
- कोणीय-विशिष्ट लोकेटर
- जैस्मीन / मोचा जैसे व्यवहार-संचालित विकास के लिए समर्थन
- नींद / इंतजार जोड़ने की जरूरत नहीं है
- जेनकींस / ब्राउज़र स्टैक / ग्रंट आदि के साथ समर्थित एकीकरण।
- कोणीय जेएस वेबसाइटों में सिंक्रनाइज़ेशन समस्या से निपटने से छुटकारा पाएं
- एकाधिक ब्राउज़र समर्थन (फ़ायरफ़ॉक्स, क्रोम, सफारी, इंटरनेट एक्सप्लोरर)
- कोड बदलने की आवश्यकता के बिना मोबाइल ब्राउज़रों में भी समान स्क्रिप्ट चलाने की क्षमता
किस फ्रेमवर्क का उपयोग करें?
यह दो व्यवहार-संचालित विकास (BDD) बॉक्स के ठीक बाहर परीक्षण चौखटों का समर्थन करता है:
- चमेली: चमेली जब प्रोटेक्टर स्थापित किया जाता है तो डिफ़ॉल्ट परीक्षण ढांचा होता है। हम इस लेख में जैस्मीन का उपयोग करेंगे।
- मोचा: कहवा एक जावास्क्रिप्ट परीक्षण ढांचा है जो Node.js. पर चलता है। यदि आप मोचा को अपने टेस्ट फ्रेमवर्क के रूप में उपयोग करना चाहते हैं, तो आपको इसे अपने प्रोटेक्टर के साथ स्थापित करना होगा और साथ ही व्यवहार के अनुसार व्यवहार प्रेरित विकास इंटरफेस और चाय के सिद्धांतों का उपयोग करने की आवश्यकता होगी (देखें) इस लिंक अधिक जानकारी के लिए ) का है।
कैसे डाउनलोड और सेटअप प्रोटेक्टर
जैसा कि यह एक नोड.जेएस प्रोग्राम है, इसे चलाने के लिए आपको नोड.जेएस इंस्टॉल करना होगा। ऑपरेटिंग सिस्टम का चयन करके इस URL से Node.js डाउनलोड किए जा सकते हैं: Node.js डाउनलोड करें
नोड.जेएस के साथ, आप भी प्राप्त करते हैं समुद्र तल से ऊपर प्रोटेक्टर पैकेज, जिसे अब प्रोटेक्टर स्थापित करने के लिए इस्तेमाल किया जा सकता है।
अब वह नोड.जेएस आपकी मशीन पर स्थापित है, कमांड प्रॉम्प्ट (cmd) खोलें और इसे विश्व स्तर पर स्थापित करने के लिए नीचे दिए गए कमांड को हिट करें:
npm install -g protractor
‘-G ' का उपयोग इस उपकरण को विश्व स्तर पर स्थापित करने के लिए किया जाता है। यदि आप इसे विश्व स्तर पर स्थापित नहीं करना चाहते हैं तो इसे हटा दें। यह कमांड डिफ़ॉल्ट सेलेनियम सर्वर के साथ प्रोटेक्टर एपीआई भी स्थापित करता है, जिसका अर्थ है कि आपको स्टैंडअलोन सर्वर शुरू करना जरूरी नहीं है।
अब, हमें सेलेनियम सर्वर और क्रोमड्राइव स्थापित करने की आवश्यकता है। Cmd में निम्न कमांड (भी प्रोटेक्टर के साथ आता है) का उपयोग करें:
webdriver-manager update
यह हम सभी को इस ढांचे का उपयोग करके अपने पहले परीक्षण मामले के लेखन के साथ शुरू करने की आवश्यकता है। यदि आप चाहें, तो आप अपना कोड लिखने के लिए कोई भी आईडीई / संपादक स्थापित कर सकते हैं। ग्रहण आईडीई लोकप्रिय है, लेकिन विचार करने के लिए कुछ और अच्छे संपादक भी हैं। व्यक्तिगत रूप से, मैं अपने प्रोटेक्टर कोड लेखन के लिए 'एटम' का संपादक पसंद करता हूं।
अपना पहला टेस्ट केस बनाने के लिए तैयार हैं?
इसे चलाने के लिए 2 फ़ाइलों की आवश्यकता है:
- विन्यास फाइल
- विशिष्ट फ़ाइल।
विन्यास फाइल वह है जो प्रोट्रैक्टर को बताता है कि परीक्षण फ़ाइलों (चश्मा) को खोजने के लिए / कौन सा ब्राउज़र चुनना है / किस फ्रेमवर्क का उपयोग करना है (जैस्मीन / मोचा) / जहां आपके सेलेनियम ब्राउज़र और अन्य कॉन्फ़िगरेशन से बात करनी है। यदि कोई कॉन्फ़िगरेशन कॉन्फ़िगरेशन फ़ाइलों में परिभाषित नहीं है, तो यह चूक का उपयोग करेगा।
विशिष्ट फ़ाइल वह है जहां हम अपना वास्तविक परीक्षण कोड लिखते हैं। हमारे सभी परीक्षण कार्यात्मक प्रवाह / दावे इस विशिष्ट फ़ाइल में होंगे। परीक्षण मामलों की संख्या के आधार पर कई कल्पना फाइलें हो सकती हैं, लेकिन सिर्फ 1 कल्पना फ़ाइल कई चश्मे के पूरे परीक्षण सूट को चलाने में सक्षम होगी।
उदाहरण परीक्षण मामले:
अब, हम एक साधारण परीक्षण मामला लिखेंगे जहाँ हम एक URL पर नेविगेट करेंगे और पृष्ठ शीर्षक के लिए जाँच करेंगे।
यहाँ कदम हैं:
- अपने परीक्षण सूट के लिए एक नया फ़ोल्डर बनाएँ।
- ‘के रूप में नाम के साथ एक नई फ़ाइल बनाएँ जे एस '(कोई भी नाम होगा) सभी कल्पना / विन्यास फाइल s .js' के विस्तार की होंगी।
- ‘के रूप में निर्दिष्ट नाम के साथ एक नई फ़ाइल बनाएँ जे एस '।
//CheckTitleSpec.js describe('Protractor Demo', function() { it('to check the page title', function() { browser.ignoreSynchronization = true; browser.get('https://www.softwaretestinghelp.com/'); browser.driver.getTitle().then(function(pageTitle) { expect(pageTitle).toEqual('Software Testing Help - A Must Visit Software Testing Portal'); }); }); });
अब, हम अपनी कोडिंग के साथ शुरुआत करने के लिए पूरी तरह तैयार हैं। C testCaseNameSpec.js 'फ़ाइल के नीचे का कोड देखें।
यहाँ विन्यास फाइल जैसा दिखता है:
// conf.js exports.config = { framework: 'jasmine', capabilities: { browserName: 'chrome', }, specs: ('simpleTestSpec.js') };
अब, इन 2 फ़ाइलों को तोड़ने दें और देखें कि यह कैसे काम करता है।
# 1) विशेष
- ब्राउज़र स्तर के सभी कमांड commands द्वारा नियंत्रित किए जाएंगे ब्राउज़र ', एक वैश्विक जो प्रोट्रैक्टर द्वारा बनाया गया है।
- जैसा कि हम जैस्मीन ढांचे का पालन कर रहे हैं, m वर्णन करें ' तथा ' यह 'जैस्मीन के वाक्य विन्यास हैं। वर्णन में आपके परीक्षण मामले के प्रवाह को समाप्त करने के लिए संपूर्ण अंत शामिल होगा, जबकि might यह 'में कुछ परीक्षण चरण / परिदृश्य आदि शामिल हो सकते हैं। आपके पास कई entire हो सकते हैं यह यदि आप चाहें तो अपने कार्यक्रम में ब्लॉक करें।
- Browser.get एक साधारण सेलेनियम सिंटैक्स है जो ब्राउज़र में किसी विशिष्ट URL को हिट करने के लिए प्रोट्रैक्टर को बताता है।
- जैसा कि हम जिस वेबसाइट को हिट करने की कोशिश कर रहे हैं वह एक गैर-कोणीय वेबसाइट है, हम सेट करते हैं अनदेखा करना टैग को ‘ सच 'जैसा कि लाइन # 4 में प्रदर्शित किया गया है। यदि आप इस टैग को सत्य नहीं बनाते हैं, तो आपका परीक्षण त्रुटि के साथ विफल हो जाएगा 'कोणीय पृष्ठ पर नहीं पाया जा सकता है। इसके पीछे कारण यह है कि प्रोट्रेक्टर को डिफ़ॉल्ट रूप से कोणीय वेबसाइटों के साथ काम करने की उम्मीद है, और अगर हम गैर-कोणीय वेबसाइट को मान्य करने के लिए प्रोट्रैक्टर का उपयोग कर रहे हैं, तो हमें स्पष्ट रूप से प्रोट्रैक्टर को यह बताने की आवश्यकता है। हालाँकि, यदि आप कोणीय वेबसाइटों पर काम कर रहे हैं, तो इस कथन का उपयोग करने की कोई आवश्यकता नहीं है क्योंकि डिफ़ॉल्ट रूप से प्रोट्रैक्टर वेब पेज को कोणीय मान लेगा।
- 'उम्मीद' कुछ भी नहीं है, लेकिन जहां हम कुछ पूर्वनिर्धारित डेटा के बराबर वेब पेज शीर्षक की तुलना कर रहे हैं, वह दावा नहीं है। हम और अधिक विस्तार से चर्चा करेंगे।
#दो) conf.js
- जैसा कि पहले चर्चा की गई थी, कॉन्फ़िगरेशन फ़ाइल वह है जो प्रोट्रैक्टर को मुख्य विवरण बताती है। जैसा कि कोड में प्रदर्शित किया गया है, रूपरेखा 'जैस्मीन' है।
- क्षमताओं अनुभाग के अंदर, ब्राउज़र कॉन्फ़िगरेशन सेट हैं। आप ब्राउज़र का नाम जैसे फ़ायरफ़ॉक्स / क्रोम आदि को परिभाषित कर सकते हैं। आप ब्राउज़रों के अधिकतम उदाहरण भी सेट कर सकते हैं ताकि एक समय में, आप विभिन्न उपलब्ध ब्राउज़र विंडो पर कई टेस्ट केस चला सकें।
- में ' ऐनक 'सेक्शन, हम कल्पना फ़ाइल का रास्ता देते हैं, अर्थात् बिल्कुल वही जहाँ कॉन्फ़िगरेशन फ़ाइल के संबंध में फ़ाइल स्थित है।
- कई अन्य शांत विशेषताएं भी हैं जिन्हें आप अपनी कॉन्फ़िगरेशन फ़ाइल से जोड़ सकते हैं जैसे कि रिपोर्टिंग / ऑनपेयर फ़ंक्शन / थ्रेशोल्ड टाइमआउट आदि। हम इस ट्यूटोरियल में इनमें से कुछ को कवर करेंगे।
अपने परीक्षण मामलों को कैसे चलाएं?
हमने कोड लिखा है और अब हमें अपने कोड को चलाने के लिए थोड़ा सा धक्का चाहिए। अपना प्रोग्राम चलाने के लिए cmd में निम्न कमांड मारो:
protractor conf.js
यह कमांड आपके टेस्ट स्क्रिप्ट को चलाने के बाद सेलेनियम सर्वर को चलाना शुरू कर देगा। आप लॉग को cmd में देख सकते हैं या यदि आप चाहें, तो लॉग को .txt फ़ाइल में भी कैप्चर किया जा सकता है (बस जोड़ें >> textFileName.txt उपरोक्त कमांड और लॉग के बाद कॉन्फ़िगरेशन फ़ाइल के रूप में उसी निर्देशिका में स्थित पाठ फ़ाइल में सहेजा जाएगा)।
एक क्रोम विंडो खुल जाएगी, जहां SoftwareTestingHelp.com वेबसाइट खोली जानी चाहिए। जब आप कोड चलाते हैं तो आउटपुट output 1 कल्पना, 0 विफलता ’होगा। इसका मतलब यह है कि हमारे पास 1 ’ब्लॉक थे, जिन्हें 0 विफलताओं के साथ निष्पादित किया गया था।
अब, नीचे की विशेष फ़ाइल पर विचार करें, जहाँ हम AngularJS पर एक वेब पेज बिल्ड पर कुछ कार्य कर रहे हैं, ताकि जब आप कोणीय वेबसाइट का परीक्षण करने की बात आती है, तो आप सेलेनियम पर प्रोट्रेक्टर का ले सकते हैं:
दोगुनी लिंक की गई सूची वर्ग c ++
// spec.js describe('Code to interact with Angular JS elements', function() { it('should multiply two integers', function() { browser.get('http://juliemr.github.io/protractor-demo/'); element(by.model('first')).sendKeys(5); element(by.model('second')).sendKeys(5); element(by.model('operator')).click(); element(by.xpath('.//option(@value= 'MULTIPLICATION')')).click(); element(by.id('gobutton')).click(); expect(element(by.binding('latest')) .getText()).toEqual('10'); //Incorrect expectation expect(element(by.binding('latest')) .getText()).toEqual('25'); //Correct expectation }); });
इस युक्ति को चलाने के लिए आप उसी conf.js का उपयोग कर सकते हैं। बस विनिर्देश फ़ाइल नाम अपडेट करना सुनिश्चित करें।
अब, इस युक्ति फ़ाइल में, हम एक कोणीय JS वेबसाइट के साथ खेल रहे हैं ताकि आप देख सकें कि प्रोट्रैक्टर क्या वास्तव में सक्षम है।
यदि आप पहले की तरह ही इस फ़ाइल को चलाते हैं, तो एक वेब पेज 2 टेक्स्ट बॉक्स, एक ड्रॉप डाउन, एक बटन और कुछ अन्य वेब तत्वों के साथ खुलेगा। जैसा कि आप पहले ही अनुमान लगा चुके हैं, यह एक कैलकुलेटर पृष्ठ है। हम इनपुट के रूप में 2 पूर्णांक दे रहे हैं और एक गुणा ऑपरेशन कर रहे हैं।
जैसा कि हमने पहले ही चर्चा की थी, इस उपकरण का उपयोग करने का एक सबसे बड़ा फायदा यह है कि कोणीय तत्वों का पता लगाने के लिए इसकी अनूठी तकनीक है। ‘By.model ' तत्वों का पता लगाने का एक ऐसा तरीका है। K .sendKeys () ' पाठ बॉक्स में मान भेजने के लिए सामान्य रूप से सेलेनियम सिंटैक्स है और ‘.Click () ' बटन पर क्लिक करने के लिए उपयोग किया जाता है।
जैसे कि पहले भी चर्चा की जा चुकी है, ‘उम्मीद’ एक जोर है, जो प्रोटेक्टर को संख्याओं के गुणन के परिणाम को पकड़ने और, 10 'और' 25 'क्रमिक रूप से तुलना करने के लिए कह रहा है। सरल गणित हमें बताता है कि आउटपुट and 25 ’होना चाहिए और इसलिए, पहला जोर विफल होता है और दूसरा पास होता है।
परिणामस्वरूप, आपको will मिलेगा 1 कल्पना, 1 असफलता जब आप कोड चलाते हैं तो लॉग्स में, जो अपेक्षित होता है।
प्रोट्रैक्टर की कुछ और बेहतरीन विशेषताएं
(1) अभिकथन और एनोटेशन
आटोमेशन ऑटोमेशन स्क्रिप्ट का एक महत्वपूर्ण हिस्सा है। विशेष अर्थ रखने के लिए कक्षा में कुछ तरीकों को प्रभावी ढंग से टैग करने के लिए एनोटेशन भी बहुत उपयोगी हैं।
यह विभिन्न प्रकार के अभिकथन और एनोटेशन प्रदान करता है और इसके अलावा, अपने स्वयं के निबंधों को बनाने की क्षमता भी प्रदान करता है।
नीचे दिए गए उदाहरण पर विचार करें:
describe('Code to understand assertions/annotations', function() { beforeEach(function() { browser.get('http://juliemr.github.io/protractor-demo/'); }); afterEach(function() { browser.get('https://www.madewithangular.com/#/'); }); var multiplyNumbers = function(a, b) { element(by.model('first')).sendKeys(a); element(by.model('second')).sendKeys(b); element(by.model('operator')).click(); element(by.id('gobutton')).click(); }; it('should multiply two integers', function() { multiplyNumbers(2, 2); expect(element.all(by.repeater('result in memory')).count()).toEqual(2); multiplyNumbers(3, 3); expect(element.all(by.repeater('result in memory')).count()).toEqual(2); }); });
उपरोक्त उदाहरण में, हम 2 एनोटेशन का उपयोग कर रहे हैं, 'पहले' तथा 'प्रत्येक के बाद' । ये एनोटेशन TestNG (पारंपरिक सेलेनियम) में भी उपलब्ध हैं। ये एनोटेशन यह सुनिश्चित करते हैं कि कोड के किसी विशेष टुकड़े को क्रमशः शेष कोड के निष्पादन से पहले / बाद में निष्पादित किया जाएगा।
तो, यहाँ कोड का निष्पादन कैसे होगा,
- प्रोटेक्टर ract के अंदर पहुंच जाएगा पहले 'पहले ब्लॉक करें और यह हिट होगा will http://juliemr.github.io/protractor-demo/ ब्राउज़र में URL।
- अब, प्रवाह ’it 'ब्लॉक में चला जाएगा और फ़ंक्शन move गुणा करें ' बुलाया जाएगा, जो बदले में, इसमें निर्दिष्ट कार्यों को नियंत्रित करता है जहां नियंत्रण को वापस भेजा जाता है जहां फ़ंक्शन को बुलाया गया था।
- अंत में, मुखर अपना काम करेगा। अब, यदि हम एक ही समय में कई तत्वों से निपटना चाहते हैं, तो आप इस टूल की एक विशेषता all element.all ’का उपयोग कर सकते हैं। यह निर्दिष्ट लोकेटर (इस मामले में by.repeater) के साथ सभी उपलब्ध तत्वों की पहचान करेगा। यह आपके ऊपर निर्भर है कि आप पहचाने गए तत्वों के साथ क्या करना चाहते हैं। इस मामले में, हम एक दिए गए संख्या के साथ गणना इतिहास की तुलना कर रहे हैं।
- चूंकि, पहले दावे में, हम गणना इतिहास गणना की तुलना even 2 'से कर रहे हैं, भले ही हमने गणना सिर्फ एक बार की हो, लेकिन दावा विफल हो जाएगा। हालाँकि, दूसरी गणना, दूसरी गणना के बाद पास होगी, इतिहास की गणना, 2 'होगी।
कई और उपलब्ध प्रकार के दावे हैं। जिनमें से कुछ नीचे दिए गए हैं:
क) वेब तत्व से पाठ प्राप्त करें और एक निश्चित मूल्य के साथ तुलना करें:
element(by.locator('someLocator')).getText(text) .then(function() { expect(text).toEqual('someData'); expect(text).not.toEqual('someData'); expect(text).toContain('someOtherData'); });
ख) सत्यापित करें कि कोई वेब तत्व पृष्ठ पर प्रदर्शित है या नहीं:
expect(browser.driver.findElement(by.locator(someLocator)) .isDisplayed()).toBe(true);
# 2) कई ब्राउज़रों / विंडोज़ / टैब को संभालना
जब ब्राउज़र को संभालने की बात आती है तो कई मामले हो सकते हैं। इनमें से कुछ मामले नीचे दिए गए हैं:
a) किसी भी लिंक पर क्लिक करने से एक नया टैब खुलता है
कभी-कभी, जब आप किसी लिंक पर क्लिक करते हैं, तो एक नया टैब खुलता है और बाकी क्रियाओं को नई खुली खिड़की में जगह बनाने की आवश्यकता होती है। इस मामले में, जब आप कोड को बिंदु पर लिखते हैं तो एक नया टैब खोला जाता है, आपको निम्न तरीके का उपयोग करके विंडो हैंडलर को लागू करना होगा:
//Get all of the opened windows and store the count in handles browser.getAllWindowHandles().then(function(handles) { //Now switch the control to the newly opened window browser.switchTo().window(handles(1)).then(function() { //Write the code which needs to be executed in the new tab }); });
पहले सभी उपलब्ध खिड़कियों की गिनती प्राप्त करें और फिर खिड़कियों के बीच नियंत्रण स्विच करने के लिए अनुक्रमण का उपयोग करें। नई विंडो शुरू करने वाली मूल विंडो में इंडेक्स 0 होगा, जबकि बाद की विंडो में इंडेक्स में वृद्धि होगी।
ख) नए सत्र के साथ एक पूरी तरह से नया ब्राउज़र खोलना
जब आपको ब्राउज़र पर कुछ क्रियाएं करने की आवश्यकता होती है और ब्राउज़र के एक अलग सत्र पर आगे की कार्रवाई करने की आवश्यकता होती है, तो हमें इसका उपयोग करने की आवश्यकता होती है forkNewDriverInstance । इस मामले में, हम निम्नलिखित तरीके से एक नए ब्राउज़र उदाहरण के साथ एक नया ब्राउज़र बनाते हैं:
describe('Code to understand assertions/annotations', function() { //Create a new browser instance var newBrowser = browser.forkNewDriverInstance(); it('should should open multiple browsers instances', function() { //Opens a URL in the 1st browser instance browser.get('http://juliemr.github.io/protractor-demo/'); //Opens a URL in the 2nd browser instance newBrowser.get('https://www.madewithangular.com/#/'); newBrowser.driver.quit(); }); });
ग) अपने परीक्षण के मामले को कई ब्राउज़रों में चलाना:
एक बार में 2 ब्राउज़रों में अपना परीक्षण मामला चलाना कुछ कॉन्फ़िगरेशन फ़ाइल आपके लिए कर सकती है। बस अपनी कॉन्फ़िगरेशन फ़ाइल में नीचे कोड जोड़ें:
जैसे ही आप इस कॉन्फ़िगरेशन फ़ाइल को चलाते हैं, आपको फ़ायरफ़ॉक्स और क्रोम दोनों पर एक साथ चलने वाले परीक्षण दिखाई देंगे और रन लॉग को अलग से कमांड प्रॉम्प्ट में प्रदर्शित किया जाएगा।
// conf.js exports.config = { framework: 'jasmine', specs: ('SomeSpec.js'), multiCapabilities: ({ browserName: 'firefox' }, { browserName: 'chrome' }) }
# 3) अपने ढांचे को और बेहतर बनाने के लिए पेज ऑब्जेक्ट्स का उपयोग करें
यह टूल अपने आप में अच्छा है लेकिन पेज ऑब्जेक्ट मॉडल (POM) के साथ जुड़ने पर यह अजेय हो जाता है। पृष्ठ ऑब्जेक्ट मॉडल के साथ इसकी अधिकांश कमियों (यदि कोई हो) को दूर किया जाता है। इसके अलावा, पोम आपके प्रोजेक्ट को अधिक संरचित तरीके से बनाए रखने में भी मदद करता है।
यदि आप नहीं जानते कि POM क्या है, तो कोई चिंता नहीं। POM पृष्ठों के आधार पर आपके परीक्षण मामले को अलग करने का एक तरीका है।
इस उदाहरण को लें:
एक शॉपिंग वेबसाइट है। आपका परीक्षण मामला एक उत्पाद का चयन करने के लिए है, इसे कार्ट में जोड़ें और फिर इसे खरीद लें।
अब, इसके लिए अपने परीक्षण स्क्रिप्ट कोड को प्रबंधित करने के दो तरीके हैं:
- अपने तर्क में जिस पृष्ठ पर लिखा है, उसी पृष्ठ पर सभी लोकेटरों के साथ एक सादा परीक्षण प्रकरण लिखें,
- परीक्षण के मामले के अपने प्रवाह के सभी लिखें, अपनी कल्पना फ़ाइल में अपने तर्क और अपने locators अलग और विभिन्न फ़ाइलों में डेटा का परीक्षण करें। प्रत्येक वेब पेज पर एक .js पेज फ़ाइल होगी। इस तरह, आपका कोड संरचित हो जाएगा और यदि कोई अन्य परीक्षण मामला है जिसमें उसी लोकेटर की आवश्यकता है, तो आपको इन लोकेटर को फिर से लिखने की आवश्यकता नहीं है, बस इस लोकेटर फ़ाइल को आयात करें और अपनी आवश्यकता के अनुसार इसका उपयोग करें।
अपने परीक्षण के मामलों को बनाए रखना एक वास्तविक दर्द हो सकता है। यदि आप पीओएम का उपयोग करते हैं, तो आपका कोड बहुत अधिक संरचित तरीके से होगा।
जब एक लाइव नेटवर्क केबल का समस्या निवारण हो, तो आपको क्या करना चाहिए
यहां पृष्ठ ऑब्जेक्ट मॉडल का उपयोग करने का एक उदाहरण दिया गया है:
यह प्रवाह उपरोक्त स्नैपशॉट में है:
- एक परीक्षण मामला है जो लैपटॉप खरीदता है। प्रवाह और तर्क के लिए कोड खरीद में होगा laptopopecec.js।
- लैपटॉप खरीदने के लिए आने वाले सभी पृष्ठों में उचित शीर्षक के साथ 1 s .js फ़ाइल होगी। लैपटॉप खरीदने के लिए आवश्यक सभी तत्व, उनके लोकेटर संबंधित पेज फ़ाइल के अंदर होंगे।
- इस परीक्षण मामले के लिए आवश्यक डेटा को टेस्टडेटा फ़ोल्डर में या तो '.json' प्रारूप में या एक्सेल प्रारूप में सहेजा जा सकता है।
- एक बार पृष्ठों और लोकेटरों के साथ किए जाने के बाद, बस लोकेटर / टेस्ट डेटा का उपयोग करने के लिए अपनी कल्पना फ़ाइल में इन फ़ाइलों को आयात करें और आप सभी अपने परीक्षण मामले के साथ सेट हैं।
# 4) रिपोर्टिंग
एनपीएम (नोड पैकेज मैनेजर) विभिन्न रिपोर्टिंग पैकेज प्रदान करता है, जिसके साथ प्रत्येक परीक्षण चरण के स्क्रीनशॉट को कैप्चर किया जा सकता है और साथ ही, परीक्षण रन पूरा होने के बाद, यह आपके लिए एक HTML रिपोर्ट उत्पन्न करेगा। आपको बस इतना करना है कि कमांड प्रॉम्प्ट खोलकर और नीचे दिए गए कमांड को दबाकर उन पैकेजों को स्थापित करना है:
npm install -g protractor-jasmine2-html-reporter
npm install protractor-jasmine2-screenshot-reporter --save-dev
एक बार ये पैकेज स्थापित हो जाने के बाद, हर बार जब आप अपनी कॉन्फ़िगरेशन फ़ाइल चलाते हैं, तो आपके परीक्षण मामलों के सभी स्क्रीनशॉट सहेजे जाएंगे और साथ ही एक HTML रिपोर्ट भी होगी जो परीक्षण केस पास / असफल परिणाम प्रदर्शित करती है।
# 5) अन्य शक्तिशाली उपकरणों जैसे Git / Jenkins / Browserstack / Grunt के साथ एकीकृत करें
आपके परीक्षण मामलों को और बेहतर बनाने में मदद करने के लिए बाज़ार में कई उपकरण उपलब्ध हैं। Git / Jenkins / BrowserStack / Grunt कुछ ऐसे उपकरण हैं जो आपके सामान्य प्रोट्रेक्टर परीक्षण स्क्रिप्ट में महत्वपूर्ण मूल्य जोड़ते हैं। और सबसे अच्छी बात यह है कि आपको इनमें से किसी भी उपकरण के साथ अपने प्रोटेक्टर को एकीकृत करने के लिए अपनी कल्पना फ़ाइल को स्पर्श नहीं करना है। यह आपकी कॉन्फ़िगरेशन फ़ाइल है, जो आपके लिए इन सभी चीजों को ले जाएगी।
जाओ एक बहुत शक्तिशाली संस्करण नियंत्रण उपकरण है। यदि एक से अधिक डेवलपर्स शामिल हैं, तो अपने कोड को Git में रखना हमेशा एक सर्वोत्तम अभ्यास है।
जेनकींस एक निरंतर एकीकरण उपकरण है जिसके साथ, आप अपने परीक्षण मामलों को शेड्यूल कर सकते हैं और इसे अपनी आवश्यकता के अनुसार चला सकते हैं। प्रोटेक्टर लिपियों को जेनकिंस के साथ भी कॉन्फ़िगर किया जा सकता है। जेनकिंस पर अपने परीक्षण मामलों को चलाने का सबसे अच्छा उपयोग यह है कि यह बहुत तेज़ है और साथ ही आप एक बार में कई परीक्षण मामलों को चला सकते हैं।
BrowserStack एक क्रॉस-ब्राउज़र परीक्षण उपकरण है जिसका उपयोग विभिन्न ब्राउज़रों में आपके अनुप्रयोगों का परीक्षण करने के लिए भी किया जा सकता है। यह आपकी कॉन्फ़िगरेशन फ़ाइल में ब्राउज़रस्टैक क्रेडेंशियल्स को जोड़कर प्रोट्रैक्टर के साथ भी एकीकृत किया जा सकता है।
भूमि एक जावास्क्रिप्ट टास्क रनर है। यह आपको आपके लिए कई कार्य करने की क्षमता प्रदान करता है। इसकी अवहेलना यह है कि 4000 से अधिक कार्य हैं और आप अपनी आवश्यकता के अनुसार और भी अधिक कार्य बना सकते हैं। निम्नलिखित कुछ महत्वपूर्ण दैनिक उपयोग कार्य हैं, जिनके लिए हम ग्रंट का उपयोग कर सकते हैं:
- सभी कोडिंग सर्वोत्तम प्रथाओं को सूचीबद्ध करें और जब भी आप इनमें से किसी का भी उल्लंघन करें तो तुरंत सूचित करें।
- रन टाइम पर कई स्पेक फाइल बनाने के लिए। उदाहरण के लिए , अगर कोई परीक्षण मामला है जिसे आप कई बार चलाना चाहते हैं (1 से लेकर किसी भी संख्या तक)। यह इस समय अनावश्यक लग सकता है, लेकिन हर एक उपलब्ध देश में किसी भी शॉपिंग वेबसाइट के चेकआउट प्रवाह को चलाने के बारे में सोचें। मैन्युअल रूप से कई ऐनक बनाने के लिए यह थकाऊ होगा। तो, ग्रंट को आपके लिए ऐसा करने दें।
- घड़ी की सुविधा। आप एक टेस्ट केस लिखते हैं और हर बार जैसे ही इसमें कोई बदलाव करने के बाद अपना कोड सेव करते हैं, आप चाहते हैं कि आपका टेस्ट केस चले, ग्रंट को मिल गया है।
- कई फाइलों को समेटना।
बस इसे एक कोशिश दें और आप इसे प्यार करेंगे।
निष्कर्ष
आप सेलेनियम को प्रोट्रैक्टर की तरह काम कर सकते हैं लेकिन पहिया का फिर से आविष्कार क्यों करें? अगर Google ने प्रोट्रैक्टर को आकर्षण की तरह काम करने के लिए बहुत प्रयास किया है, तो इसे पूरी तरह से उपयोग करने दें। कम से कम AngularJS वेबसाइटों के लिए, यह आपके जीवन को बहुत आसान बना देगा।
साथ ही, यह लेख केवल प्रोट्रैक्टर के बारे में नहीं है। वहाँ बाहर प्रोट्रैक्टर की एक बड़ी दुनिया है और बाजार में उपलब्ध सैकड़ों पैकेज हैं जो सरल परीक्षण परिदृश्यों के अलावा आपके परीक्षण में अधिक सुविधाएँ जोड़ने के लिए NPM द्वारा पेश किए जाते हैं। इन पैकेजों का उपयोग करने और इसे और बेहतर बनाने के लिए स्वतंत्र महसूस करें।
लेखक के बारे में: यह देशंश की एक अतिथि पोस्ट है। वह टेस्ट में सॉफ्टवेयर डेवलपमेंट इंजीनियर के रूप में काम कर रहा है, जिसमें से एक बहुराष्ट्रीय कंपनी है। उन्हें सेलेनियम और प्रोट्रैक्टर ऑटोमेशन परीक्षण पर काम करने का व्यापक अनुभव है।
हमारा आगामी ट्यूटोरियल आपको किसी भी AngularJS साक्षात्कार को सफलतापूर्वक पूरा करने में मदद करेगा।
PREV ट्यूटोरियल | अगले ट्यूटोरियल
अनुशंसित पाठ
- सर्वश्रेष्ठ सॉफ्टवेयर परीक्षण उपकरण 2021 (क्यूए टेस्ट स्वचालन उपकरण)
- परीक्षण प्राइमर eBook डाउनलोड
- ककड़ी उपकरण और सेलेनियम का उपयोग करके स्वचालन परीक्षण - सेलेनियम ट्यूटोरियल # 30
- अनुप्रयोग स्थापित करना और उन्हें Appium परीक्षण के लिए तैयार करना
- LoadUI का उपयोग करके लोड टेस्टिंग - एक फ्री और ओपन सोर्स लोड टेस्टिंग टूल
- जेमीटर के साथ सेलेनियम का एकीकरण
- एचपी लोडरनर ट्यूटोरियल के साथ लोड परीक्षण
- WAVE पहुँच क्षमता परीक्षण उपकरण ट्यूटोरियल