एक्सटेंशन को समझने के लिए, पहले सेलेनियम आईडीई के तीन स्तंभों को समझने की सुविधा देता है
- क्रिया: आप UI स्क्रीन पर कौन सा ऑपरेशन कर रहे हैं
- मूल्यांकनकर्ता / अभिकथन: आप यूआई से प्राप्त डेटा पर क्या सत्यापन करते हैं
- लोकेटर रणनीति: हम यूआई में तत्व कैसे पा सकते हैं।
अब, सेलेनियम आईडीई के पास बहुत सारी परिपक्व लाइब्रेरी है जिसमें बहुत सारे कार्य, अभिकथन / मूल्यांकनकर्ता और लोकेटर रणनीतियाँ हैं।
लेकिन कभी-कभी हमें अपनी परियोजना आवश्यकताओं के लिए इसमें कुछ और कार्यक्षमता जोड़ने की आवश्यकता होती है। उस स्थिति में, हम अपने कस्टम एक्सटेंशन को जोड़कर इस लाइब्रेरी का विस्तार कर सकते हैं। इन कस्टम एक्सटेंशन को 'उपयोगकर्ता एक्सटेंशन' कहा जाता है।
उदाहरण के लिए, हमें एक एक्शन की आवश्यकता है जो वेब तत्व में भरने से पहले टेक्स्ट को ऊपरी मामले में बदल सकता है। आप इस क्रिया को डिफ़ॉल्ट क्रिया लाइब्रेरी में नहीं पा सकते हैं। ऐसे मामले में आप अपना स्वयं का 'उपयोगकर्ता एक्सटेंशन' बना सकते हैं। इस ट्यूटोरियल में, हम सीखेंगे कि टेक्स्ट को ऊपरी मामले में बदलने के लिए उपयोगकर्ता एक्सटेंशन कैसे बनाएं
सेलेनियम उपयोगकर्ता एक्सटेंशन बनाने की आवश्यकता:
सेलेनियम आईडीई के लिए उपयोगकर्ता एक्सटेंशन बनाने के लिए, हमें जावास्क्रिप्ट और जावा स्क्रिप्ट प्रोटोटाइप ऑब्जेक्ट अवधारणा की मूल अवधारणा को जानना होगा।
अपना उपयोगकर्ता एक्सटेंशन बनाने के लिए, आपको जावा स्क्रिप्ट विधियों को बनाने और उन्हें सेलेनियम ऑब्जेक्ट प्रोटोटाइप और पेजबॉट ऑब्जेक्ट प्रोटोटाइप में जोड़ने की आवश्यकता है।
सेलेनियम आईडीई उपयोगकर्ता एक्सटेंशन को कैसे पहचानता है?
सेलेनियम आईडीई में उपयोगकर्ता एक्सटेंशन जोड़ने के बाद जब हम सेलेनियम आईडीई शुरू करते हैं, तो जावास्क्रिप्ट प्रोटोटाइप में इन सभी एक्सटेंशन लोड हो जाते हैं, और सेलेनियम आईडीई उन्हें उनके नाम से पहचानता है।
यूजर एक्सटेंशन कैसे बनाएं
चरण 1) क्रिया - सभी क्रियाएं "करना" द्वारा शुरू की जाती हैं, अर्थात यदि कार्रवाई ऊपरी केस पाठ के लिए है तो उसका नाम doTextUpperCase होगा । जब हम इस कार्रवाई विधि को सेलेनियम आईडीई में जोड़ते हैं, तो सेलेनियम आईडीई स्वयं इस कार्रवाई के लिए एक प्रतीक्षा विधि बनाएगा। तो इस मामले में जब हम doTextUpperCase एक्शन बनाते हैं , तो सेलेनियम IDE TextUpperCaseAndWait के रूप में संबंधित प्रतीक्षा फ़ंक्शन बनाएगा । यह दो मापदंडों को स्वीकार कर सकता है
उदाहरण: अपर केस टेक्स्ट एक्शन
सेलेनियम।// यहाँ findElement खुद को सभी प्रकार के लोकेटर (xpath, css, name, id, className) को संभालने में सक्षम है, हमें बस लोकेटर टेक्स्ट को पास करना होगाvar element = this.page ()। FindElement (लोकेटर);// टाइप करने के लिए टेक्स्ट बनाएंtext = text.toUpperCase ();// तत्व पाठ को नए पाठ से बदलेंthis.page ()। ReplaceText (तत्व, पाठ);};
चरण 2) मूल्यांकनकर्ता / अभिकथन- सेलेनियम ऑब्जेक्ट प्रोटोटाइप में पंजीकृत सभी मूल्यांकनकर्ता उपसर्ग किए जाएंगे
"get" या "ex" है। getValueFromCompoundTable, isValueFromCompoundTable। यह दो मापदंडों को स्वीकार कर सकता है, एक लक्ष्य के लिए और दूसरा परीक्षण के मामले में मूल्य क्षेत्र के लिए।
प्रत्येक एसेस्सर के लिए, "वेरिफाइ," "मुखर" और "वेटफ़ोर" द्वारा प्रतीक्षा फ़ंक्शन उपसर्ग द्वारा पूर्ववत किए गए संबंधित सत्यापन कार्य होंगे।
उदाहरण: अपर केस टेक्स्ट मूल्यांकनकर्ताओं के लिए
Selenium.prototype.assertTextUpperCase = function (लोकेटर, टेक्स्ट) {// सभी लोकेटर-रणनीतियों को स्वचालित रूप से "findElement" द्वारा नियंत्रित किया जाता हैvar element = this.page ()। FindElement (लोकेटर);// सत्यापित करने के लिए पाठ बनाएंtext = text.toUpperCase ();// वास्तविक तत्व मूल्य प्राप्त करेंvar realValue = element.value;// सुनिश्चित करें कि वास्तविक मूल्य अपेक्षित से मेल खाता हैAssert.matches (अपेक्षितवैल्यू, वास्तविकवैल्यू);};सेलेनियम.प्रोटोटाइप.आईएसएक्सटेक्वल = फ़ंक्शन (लोकेटर, टेक्स्ट) {इसे लौटाएं ।getText (लोकेटर) .value === टेक्स्ट;};सेलेनियम।इसे वापस करें।};
चरण 3) लोकेटर रणनीति- यदि हम एक तत्व का पता लगाने के लिए अपना स्वयं का कार्य बनाना चाहते हैं
हमें उपसर्ग "FindElementBy" के साथ एक फ़ंक्शन के साथ पेजबॉट प्रोटोटाइप का विस्तार करने की आवश्यकता है।
इसमें दो पैरामीटर होंगे, पहला होगा लोकेटर स्ट्रिंग और दूसरा होगा डॉक्यूमेंट
जहां इसे खोजने की जरूरत है।
उदाहरण: अपर केस टेक्स्ट लोकेटर के लिए
// "InDocument" एक दस्तावेज़ है जिसे आप खोज रहे हैं।PageBot.prototype.locateElementByUpperCase = function (पाठ, अनैच्छिक) {// खोजने के लिए टेक्स्ट बनाएंvar अपेक्षितवैलू = text.toUpperCase ();// सभी तत्वों के माध्यम से लूप, उन लोगों की तलाश करें जिनके पास है// a value === हमारा अपेक्षित मूल्यvar allElements = inDocument.getElementsByTagName ("*");// यह तारा '*' एक तरह की नियमित अभिव्यक्ति है, यह हर तत्व के माध्यम से जाएगा (HTML DOM में हर तत्व का टैग नाम निश्चित रूप से है जैसे , ,,