सिकुली ट्यूटोरियल के लिए Selenium स्वचालन
सिकुली क्या है? Selenium?
सिकुली एक ओपन-सोर्स GUI आधारित परीक्षण स्वचालन उपकरण है। इसका उपयोग मुख्य रूप से वेब पेजों के तत्वों के साथ बातचीत करने और विंडोज़ आधारित पॉपअप को संभालने के लिए किया जाता है। सिकुली वेब पेजों और विंडोज़ पॉपअप के तत्वों के साथ बातचीत करने के लिए “इमेज रिकॉग्निशन” और “कंट्रोल GUI” की तकनीक का उपयोग करता है। सिकुली में, सभी वेब तत्वों को छवियों के रूप में लिया जाता है और प्रोजेक्ट के अंदर संग्रहीत किया जाता है।
सिकुली का उपयोग कैसे करें Selenium वेबड्राइवर
सिकुली को सिकुली JAR फ़ाइल का उपयोग करके सेलेनियम वेबड्राइवर के साथ एकीकृत किया जा सकता है।
नीचे दिया गया अनुक्रम सेलेनियम वेबड्राइवर के साथ सिकुली को कॉन्फ़िगर करने के चरणों की सूची है।
चरण 1) डाउनलोड करें नीचे दिए गए URL से Sikuli JAR फ़ाइल प्राप्त करें, और ZIP फ़ाइल की सामग्री को एक फ़ोल्डर में निकालें।
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
चरण 2) में एक नया JAVA प्रोजेक्ट बनाएं Eclipse और प्रोजेक्ट पर राइट क्लिक का उपयोग करके JAR फ़ाइल को सेलेनियम jar फ़ाइलों के साथ बिल्ड पथ में जोड़ें -> बिल्ड पथ -> बिल्ड पथ कॉन्फ़िगर करें
एक बार जब आप JAR फ़ाइल को प्रोजेक्ट बिल्ड पथ में जोड़ देते हैं, तो Sikuli द्वारा प्रदान की गई कक्षाओं का उपयोग किया जा सकता है।
सिकुली में स्क्रीन क्लास
स्क्रीन क्लास सिकुली द्वारा प्रदान की गई सभी विधियों के लिए आधार वर्ग है। स्क्रीन क्लास में स्क्रीन तत्वों पर सभी सामान्य रूप से निष्पादित संचालनों के लिए पूर्वनिर्धारित विधियाँ शामिल हैं जैसे कि क्लिक, डबल-क्लिक, टेक्स्ट बॉक्स में इनपुट प्रदान करना, होवर, आदि। नीचे स्क्रीन क्लास द्वारा प्रदान की गई सामान्य रूप से उपयोग की जाने वाली विधियों की सूची दी गई है।
विधि | विवरण | वाक्य - विन्यास |
---|---|---|
क्लिक करें | इस विधि का उपयोग छवि नाम को पैरामीटर के रूप में उपयोग करके स्क्रीन पर किसी तत्व पर क्लिक करने के लिए किया जाता है। | स्क्रीन s = नई स्क्रीन();
s.क्लिक(“QA.png”); |
डबल क्लिक करें | इस विधि का उपयोग किसी तत्व पर डबल क्लिक करने के लिए किया जाता है। यह छवि नाम को पैरामीटर के रूप में स्वीकार करता है। | स्क्रीन s = नई स्क्रीन();
s.doubleClick("QA.png"); |
प्रकार | इस विधि का उपयोग किसी तत्व को इनपुट मान प्रदान करने के लिए किया जाता है। यह छवि नाम और भेजे जाने वाले पाठ को पैरामीटर के रूप में स्वीकार करता है। |
s.type("QA.png"","टेक्स्ट"); |
मंडराना | इस विधि का उपयोग किसी तत्व पर होवर करने के लिए किया जाता है। यह छवि नाम को पैरामीटर के रूप में स्वीकार करता है। |
s.hover("QA.png"); |
खोज | इस विधि का उपयोग स्क्रीन पर किसी विशिष्ट तत्व को खोजने के लिए किया जाता है। यह छवि नाम को पैरामीटर के रूप में स्वीकार करता है। |
s.find("QA.png"); |
सिकुली में पैटर्न क्लास
पैटर्न क्लास का उपयोग इमेज फ़ाइल को अतिरिक्त विशेषताओं के साथ जोड़ने के लिए किया जाता है ताकि तत्व को विशिष्ट रूप से पहचाना जा सके। यह छवि के पथ को पैरामीटर के रूप में लेता है।
पैटर्न p = नया पैटर्न ("छवि का पथ");
पैटर्न वर्ग की सबसे अधिक उपयोग की जाने वाली विधियाँ निम्नलिखित हैं।
विधि | विवरण | वाक्य - विन्यास |
---|---|---|
फ़ाइलनाम प्राप्त करें | पैटर्न ऑब्जेक्ट में निहित फ़ाइल नाम लौटाता है. |
पैटर्न p = नया पैटर्न(“D:\Demo\QA.png”); स्ट्रिंग फ़ाइल नाम = p.getFileName(); |
समान | यह विधि एक नया पैटर्न ऑब्जेक्ट लौटाती है जिसमें समानता निर्दिष्ट मान पर सेट होती है। यह 0 से 1 के बीच समानता मान को पैरामीटर के रूप में स्वीकार करता है। सिकुली उन सभी तत्वों की तलाश करता है जो निर्दिष्ट समानता सीमा के भीतर आते हैं और एक नया पैटर्न ऑब्जेक्ट लौटाता है। |
पैटर्न p1 = p.similar(0.7f); |
ठीक | यह विधि समानता 1 पर सेट करके एक नया पैटर्न ऑब्जेक्ट लौटाती है। यह केवल निर्दिष्ट तत्व के सटीक मिलान की तलाश करती है। |
पैटर्न p1 = p.exact(); |
सिकुली का उपयोग करके फ़ाइल अपलोड के लिए कोड उदाहरण
नीचे दिया गया कोड फ़ाइल अपलोड के लिए सिकुली के उपयोग को समझाता है Firefox.
package com.sikuli.demo; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.sikuli.script.FindFailed; import org.sikuli.script.Pattern; import org.sikuli.script.Screen; import org.openqa.selenium.chrome.ChromeDriver; public class SikuliDemo { public static void main(String[] args) throws FindFailed { System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe"); String filepath = "D:\\Guru99Demo\\Files\\"; String inputFilePath = "D:\\Guru99Demo\\Files\\"; Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG"); WebDriver driver; // Open Chrome browser driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php"); // Click on Browse button and handle windows pop up using Sikuli driver.findElement(By.xpath(".//*[@id='photoimg']")).click(); s.wait(fileInputTextBox, 20); s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton); // Close the browser driver.close(); } }
कोड स्पष्टीकरण:
चरण 1) पहले कथन में क्रोम के लिए ड्राइवर निष्पादन योग्य पथ सेट करना शामिल है।
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
चरण 2) स्क्रीनग्रैब टूल का उपयोग करें जैसे कि Snipping Tool विंडोज़ पॉपअप 'फ़ाइलटेक्स्ट' का स्क्रीनशॉट लेने के लिएBox' और 'खोलें' बटन पर क्लिक करें।
आपका स्क्रीनशॉट इस प्रकार दिखना चाहिए:-
विंडोज़ फ़ाइल इनपुट टेक्स्ट बॉक्स और ओपन बटन के लिए छवियाँ 'फ़ाइलटेक्स्ट' पर संग्रहीत की जाती हैंBox.PNG' और 'OpenButton.PNG'.
सिकुली स्क्रीन पर तत्वों को पहचानने के लिए इमेज रिकॉग्निशन तकनीक का उपयोग करता है। यह स्क्रीन पर मौजूद तत्वों को केवल उनकी छवियों के आधार पर खोजता है।
उदाहरण: यदि आप नोटपैड खोलने के संचालन को स्वचालित करना चाहते हैं, तो आपको नोटपैड के लिए डेस्कटॉप आइकन की छवि को PNG फ़ाइल पर संग्रहीत करना होगा और उस पर क्लिक ऑपरेशन करना होगा।
हमारे मामले में, यह फ़ाइल इनपुट टेक्स्ट बॉक्स को पहचानता है और बटन खोलता है Windows संग्रहीत छवियों का उपयोग करके पॉपअप। यदि स्क्रीन रिज़ॉल्यूशन छवि कैप्चर से परीक्षण स्क्रिप्ट निष्पादन में बदल जाता है, तो सिकुली का व्यवहार असंगत होगा। इसलिए हमेशा उसी रिज़ॉल्यूशन पर परीक्षण स्क्रिप्ट चलाने की सलाह दी जाती है जिस पर छवियां कैप्चर की जाती हैं। छवियों के पिक्सेल आकार में परिवर्तन के परिणामस्वरूप सिकुली एक FindFailed अपवाद फेंक देगा।
चरण 3) अगले कथनों में स्क्रीन और पैटर्न क्लास के लिए ऑब्जेक्ट बनाना शामिल है। एक नया स्क्रीन ऑब्जेक्ट बनाएँ। पैटर्न ऑब्जेक्ट के पैरामीटर के रूप में उस फ़ाइल का पथ सेट करें जिसे आप अपलोड करना चाहते हैं।
Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
चरण 4) नीचे दिए गए कथनों में URL के साथ क्रोम ब्राउज़र खोलना शामिल है: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php");
उपरोक्त यूआरएल फ़ाइल अपलोड कार्यक्षमता को प्रदर्शित करने के लिए एक डेमो एप्लिकेशन है।
चरण 5) नीचे दिए गए कथन का उपयोग करके फ़ाइल चुनें बटन पर क्लिक करें
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
चरण 6) विंडोज़ पॉपअप के प्रकट होने की प्रतीक्षा करें। ब्राउज़ बटन पर क्लिक करने के बाद विंडोज़ पॉपअप खुलने से जुड़ी देरी को संभालने के लिए प्रतीक्षा विधि का उपयोग किया जाता है।
s.wait(fileInputTextBox, 20);
चरण 7) इनपुट फ़ाइल टेक्स्ट बॉक्स में फ़ाइल पथ टाइप करें और ओपन बटन पर क्लिक करें
s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton);
चरण 8) ब्राउज़र बंद करें
driver.close();
आउटपुट:
प्रारंभ में, स्क्रिप्ट क्रोम ब्राउज़र खोलता है
'फ़ाइल चुनें' बटन पर क्लिक करने पर, विंडोज़ फ़ाइल पॉपअप स्क्रीन दिखाई देगी। फ़ाइल इनपुट टेक्स्टबॉक्स में डेटा दर्ज करें और 'ओपन' बटन पर क्लिक करें
फ़ाइल अपलोड पूर्ण होने और ब्राउज़र बंद होने पर नीचे दी गई स्क्रीन प्रदर्शित होती है
निष्कर्ष
सिकुली का उपयोग वेब पेज और विंडोज़ पॉपअप पर फ्लैश ऑब्जेक्ट को आसानी से संभालने के लिए किया जाता है। सिकुली का सबसे अच्छा उपयोग तब किया जाता है जब उपयोगकर्ता इंटरफ़ेस पर तत्व अक्सर नहीं बदलते हैं। इस नुकसान के कारण, स्वचालन परीक्षण के दृष्टिकोण से, रोबोट और ऑटोआईटी जैसे अन्य फ्रेमवर्क की तुलना में सिकुली को कम प्राथमिकता दी जाती है।