efficient selenium scripting
पिछले ट्यूटोरियल में, हमने तकनीकी निहितार्थों पर चर्चा की एक रूपरेखा में लॉगिंग को लागू करते समय । हमने चर्चा की log4j उपयोगिता लंबाई में। हमने उन बुनियादी घटकों पर चर्चा की जो प्रयोज्य दृष्टिकोण से log4j का गठन करते हैं। परिशिष्ट और लेआउट के साथ, एक उपयोगकर्ता को वांछित लॉगिंग प्रारूप / पैटर्न और डेटा स्रोत / स्थान का चयन करने के लिए लगाया जाता है।
इसमें वर्तमान 27 वें ट्यूटोरियल में व्यापक मुफ्त सेलेनियम ऑनलाइन प्रशिक्षण श्रृंखला , हम अपना ध्यान कुछ तुच्छ की ओर स्थानांतरित करेंगे अभी तक महत्वपूर्ण विषय यह हमें कुछ आवर्तक समस्याओं का निवारण करने के लिए मार्गदर्शन करेगा। हम दैनिक स्क्रिप्टिंग में उनका उपयोग कर सकते हैं या नहीं कर सकते हैं लेकिन वे लंबे समय में सहायक होंगे।
हम करेंगे कुछ अग्रिम अवधारणाओं पर चर्चा करें जिसमें हम माउस और कीबोर्ड घटनाओं से निपटेंगे, सूचियों को लागू करके कई लिंक तक पहुंचेंगे । तो क्यों न चलें और उचित परिदृश्यों और कोड स्निपेट की सहायता से इन विषयों पर संक्षेप में चर्चा करें।
अनुभवी के लिए सॉफ्टवेयर परीक्षण साक्षात्कार प्रश्न
आप क्या सीखेंगे:
- जावास्क्रिप्ट कार्यकारी
- एक सूची में कई तत्वों तक पहुँचना
- कीबोर्ड और माउस घटनाओं को संभालना
- निष्कर्ष
- अनुशंसित पाठ
जावास्क्रिप्ट कार्यकारी
परीक्षण परिदृश्य को स्वचालित करते समय, कुछ क्रियाएं होती हैं जो परीक्षण स्क्रिप्ट का एक अंतर्निहित हिस्सा बन जाती हैं।
ये क्रियाएँ हो सकती हैं:
- बटन पर क्लिक करना, हाइपरलिंक, आदि।
- एक पाठ बॉक्स में टाइपिंग
- लंबवत या क्षैतिज रूप से स्क्रॉल करना जब तक वांछित वस्तु को दृश्य में नहीं लाया जाता है
- और भी बहुत कुछ
अब, यह पहले के ट्यूटोरियल से स्पष्ट है कि इस तरह के कार्यों को स्वचालित करने का सबसे अच्छा तरीका सेलेनियम कमांड का उपयोग करना है।
लेकिन क्या होगा अगर सेलेनियम काम न करे?
हां, यह पूरी तरह से संभव है कि बहुत ही बुनियादी और प्राथमिक सेलेनियम कमांड कुछ स्थितियों में काम न करें।
इस तरह की स्थिति का निवारण करने में सक्षम होने के लिए, हमने जावास्क्रिप्ट एक्ज़क्यूटर्स को चित्र में दिखाया।
जावास्क्रिप्ट एक्जिक्यूटर्स क्या हैं?
JavascriptExecutor इंटरफ़ेस org.openqa.selenium और java.lang.Object क्लास का एक हिस्सा है। JavascriptExecutor जावास्क्रिप्ट को वेब-ब्राउज़र के भीतर सीधे निष्पादित करने की क्षमता प्रस्तुत करता है। जावास्क्रिप्ट को निष्पादित करने में सक्षम होने के लिए, इसके कार्यान्वयन में मापदंडों के एक विशिष्ट सेट के साथ तरीकों के रूप में कुछ तंत्र प्रदान किए जाते हैं।
तरीकों
एग्जीक्यूटस्क्रिप्ट (स्ट्रिंग स्क्रिप्ट, आर्ग्स)
जैसा कि विधि नाम से पता चलता है, यह वर्तमान विंडो, अलर्ट, फ्रेम आदि के भीतर जावास्क्रिप्ट को क्रियान्वित करता है (वेबड्राइवर उदाहरण जो वर्तमान में ध्यान केंद्रित कर रहा है)
executeAsyncScript (स्ट्रिंग स्क्रिप्ट, आर्ग्स)
जैसा कि विधि नाम से पता चलता है, यह वर्तमान विंडो, अलर्ट, फ्रेम आदि के भीतर जावास्क्रिप्ट को क्रियान्वित करता है (वेबड्राइवर उदाहरण जो वर्तमान में ध्यान केंद्रित कर रहा है)
पैरामीटर और आयात विवरण दोनों निष्पादक विधियों के लिए सामान्य हैं।
मापदंडों
स्क्रिप्ट - निष्पादित करने के लिए स्क्रिप्ट
तर्क - इसके निष्पादन के लिए स्क्रिप्ट के लिए आवश्यक पैरामीटर (यदि कोई हो)
आयात कथन
हमारी परीक्षा लिपियों में JavascriptExecutors का उपयोग करने में सक्षम होने के लिए, हमें निम्नलिखित सिंटैक्स का उपयोग करके पैकेज को आयात करना होगा:
आयात org.openqa.selenium.JavascriptExecutor;
नमूना कोड
# 1) वेब तत्व पर क्लिक करना
// Locating the web element using id WebElement element = driver.findElement(By.id('id of the webelement')); // Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Clicking the web element js.executeScript('arguments(0).click();', element);
# 2) एक टेक्स्ट बॉक्स में टाइपिंग
// Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Typing the test data into Textbox js.executeScript('document.getElementById(‘id of the element’).value=’test data’;”);
# 3) वेब तत्व के दृश्य में आने तक स्क्रॉल करना
WebElement element=driver.findElement(By.xpath('//input(contains(@value,'Save'))')); // Instantiating the javascriptExecutor and scrolling into the view in the single test step ((JavascriptExecutor)driver).executeScript('arguments(0).scrollIntoView(true);',element);
आपको जावास्क्रिप्ट लिखने के लिए कोड लिखने के कई अन्य तरीके मिल सकते हैं।
एक सूची में कई तत्वों तक पहुँचना
कई बार, हम एक ही प्रकार के तत्वों जैसे कि कई हाइपरलिंक, चित्र इत्यादि को ऑर्डर या अनऑर्डर किए गए सूची में व्यवस्थित कर सकते हैं। इस प्रकार, यह ऐसे तत्वों से निपटने के लिए कोड के एक टुकड़े से पूरी तरह से समझ में आता है और यह WebElement List का उपयोग करके किया जा सकता है। जिन तत्वों की मैं बात कर रहा हूं, उन्हें समझने के लिए नीचे दिए गए स्क्रीनशॉट को देखें।
उपरोक्त छवि में, हम देखते हैं कि विभिन्न सेवा प्रदाता एक अव्यवस्थित सूची से संबंधित हैं। इस प्रकार, तत्वों की सूची का उपयोग करके इन तत्वों की क्लिक करने की क्षमता और दृश्यता का सत्यापन एक ही कोड के द्वारा किया जा सकता है।
लोड और प्रदर्शन परीक्षण के बीच अंतर
आयात कथन
हमारी परीक्षण लिपियों में एक WebElement सूची का उपयोग करने में सक्षम होने के लिए, हमें निम्नलिखित सिंटैक्स का उपयोग करके पैकेज को आयात करना होगा:
आयात java.util.ist;
नमूना कोड
// Storing the list List serviceProviderLinks = driver.findElements(By.xpath('//div(@id='ServiceProvider')//ul//li')); // Fetching the size of the list int listSize = serviceProviderLinks.size(); for (int i=0; iविभिन्न आवश्यकताएं हैं जिनके तहत उपयुक्त कार्यान्वयन परिवर्तनों के साथ तत्वों को सत्यापित करने के लिए सूचियों का उपयोग किया जा सकता है।
कीबोर्ड और माउस घटनाओं को संभालना
कीबोर्ड ईवेंट्स को हैंडल करना
जैसा कि पहले भी कहा गया है, अलग-अलग संदर्भों में एक ही समस्या के बयान से निपटने के लिए कई तरीके हैं।
इस प्रकार, कई बार एक पारंपरिक समस्या को अधिक उन्नत रणनीति के साथ बदलकर समस्या से निपटने के लिए एक आवश्यकता पैदा होती है। मैंने ऐसे मामले देखे हैं जहां मैं सेलेनियम कमांड द्वारा अलर्ट और पॉप अप आदि से निपट नहीं सका। इस प्रकार मुझे कीबोर्ड स्ट्रोक और माउस ईवेंट का उपयोग करने के लिए अलग-अलग जावा उपयोगिताओं का विकल्प चुनना पड़ा।
कीबोर्ड इवेंट्स और माउस इवेंट्स करने के लिए रोबोट क्लास एक ऐसा विकल्प है।
आइए एक परिदृश्य और इसके कार्यान्वयन की सहायता से अवधारणा को समझते हैं।
परिदृश्य:
आइए हम एक ऐसी स्थिति को इकट्ठा करते हैं जहां स्क्रीन पर एक अनावश्यक पॉप अप दिखाई देता है जिसे अलर्ट इंटरफ़ेस का उपयोग करके स्वीकार या खारिज नहीं किया जा सकता है, इस प्रकार हमारे पास एकमात्र विकल्प बचता है जो शॉर्टकट कुंजियों का उपयोग करके विंडो को बंद करना है - 'Alt + spacebar + C' । आइए देखें कि हम रोबोट क्लास का उपयोग करके पॉपअप को कैसे बंद करते हैं।
कार्यान्वयन शुरू करने से पहले, हमें अपने परीक्षण स्क्रिप्ट के भीतर रोबोट वर्ग का उपयोग करने में सक्षम होने के लिए आवश्यक पैकेज आयात करना चाहिए।
आयात कथन
आयात java.awt.Robot;
नमूना कोड
// Instantiating Robot class Robot rb =new Robot(); // Calling KeyPress event rb.keyPress(KeyEvent.VK_ALT); rb.keyPress(KeyEvent.VK_SPACE); rb.keyPress(KeyEvent.VK_C); // Calling KeyRelease event rb.keyRelease(KeyEvent.VK_C); rb.keyRelease(KeyEvent.VK_SPACE); rb.keyRelease(KeyEvent.VK_ALT);
माउस घटनाओं को संभालने के लिए रोबोट क्लास का भी उपयोग किया जा सकता है लेकिन आइए हम यहां माउस की घटनाओं को संभालने के लिए सेलेनियम की क्षमताओं को देखते हैं।
माउस घटनाओं से निपटने
वेबड्राइवर इंटरेक्शन उपयोगिताओं की एक विस्तृत श्रृंखला प्रदान करता है जो उपयोगकर्ता माउस और कीबोर्ड घटनाओं को स्वचालित करने के लिए शोषण कर सकता है। एक्शन इंटरफ़ेस एक ऐसी उपयोगिता है जो एकल उपयोगकर्ता इंटरैक्शन का अनुकरण करती है।
इस प्रकार, हम एक ड्रॉप डाउन पर माउस होवर के लिए एक्शन इंटरफ़ेस देखेंगे, जो अगले परिदृश्य में विकल्पों की एक सूची खोलता है।
परिदृश्य:
- ड्रॉपडाउन पर माउस हॉवर
- सूची विकल्पों में से किसी एक आइटम पर क्लिक करें
आयात कथन
आयात org.openqa.selenium.interactions.Actions;
नमूना कोड
विंडोज़ 10 के लिए सबसे अच्छा पीसी मरम्मत सॉफ्टवेयर
// Instantiating Action Interface Actions actions= new Actions(driver); // howering on the dropdown actions.moveToElement(driver.findElement(By. id ('id of the dropdown'))).perform(); // Clicking on one of the items in the list options WebElement subLinkOption=driver.findElement(By.id('id of the sub link')); subLinkOption.click();
निष्कर्ष
इस ट्यूटोरियल में, हमने कुशल स्क्रिप्टिंग से संबंधित कुछ उन्नत विषयों और उन परिदृश्यों का निवारण करने के लिए चर्चा की जहाँ उपयोगकर्ता को माउस और कीबोर्ड ईवेंट को संभालने की आवश्यकता होती है। हमने यह भी चर्चा की कि एक सूची में एक से अधिक वेब तत्व कैसे संग्रहीत करें। मुझे आशा है कि यदि आप इन बाधाओं का सामना करने में सक्षम होंगे।
अगला ट्यूटोरियल # 28 : श्रृंखला में आगामी ट्यूटोरियल के लिए, हम चर्चा करेंगे सेलेनियम वेबड्राइवर का उपयोग करके डेटाबेस परीक्षण की अवधारणा । हम सेलेनियम प्रश्नों को मारते हुए और सेलेनियम वेबड्राइवर कोड के माध्यम से परिणाम प्राप्त करते हुए डेटाबेस कनेक्शन के तंत्र को देखेंगे।
अनुशंसित पाठ
- सेलेनियम वेबड्राइवर का परिचय - सेलेनियम ट्यूटोरियल # 8
- लॉग (लॉग 4 जे ट्यूटोरियल) के साथ सेलेनियम लिपियों को डीबग करना - सेलेनियम ट्यूटोरियल # 26
- 30+ सर्वश्रेष्ठ सेलेनियम ट्यूटोरियल: वास्तविक उदाहरणों के साथ सेलेनियम जानें
- ककड़ी सेलेनियम ट्यूटोरियल: ककड़ी जावा सेलेनियम वेबड्राइवर एकीकरण
- सेलेनियम लिपियों के निर्माण के लिए क्रोम और IE ब्राउज़रों में तत्वों का पता कैसे लगाएं - सेलेनियम ट्यूटोरियल # 7
- हमारी पहली वेबड्राइवर स्क्रिप्ट का कार्यान्वयन - सेलेनियम वेबड्राइवर ट्यूटोरियल # 10
- वेबड्राइवर संपूर्ण सेटअप और स्थापना ग्रहण के साथ - सेलेनियम ट्यूटोरियल # 9
- जेनरिक और टेस्टीयूइट्स बनाना - सेलेनियम ट्यूटोरियल # 22