how take screenshot selenium
यह ट्यूटोरियल सेलेनियम स्क्रीनशॉट के महत्व को बताता है और उदाहरण के साथ सेलेनियम एप्लिकेशन में स्क्रीनशॉट लेने के लिए एशोट का उपयोग कैसे करें:
मूल रूप से बग विश्लेषण में स्क्रीनशॉट का उपयोग किया जाता है। वे यह समझने में मदद करते हैं कि एप्लिकेशन उपयोगकर्ता की आवश्यकताओं के अनुसार काम करता है या नहीं।
कैसे .jar फ़ाइल को स्थापित करने के लिए
प्रत्येक परीक्षण मामले के लिए, प्राप्त आउटपुट भिन्न हो सकता है, कभी-कभी सही आउटपुट प्राप्त होता है, कभी-कभी हमें एक त्रुटि मिलती है, कभी-कभी त्रुटि संदेश अनुपलब्ध या अपर्याप्त इनपुट डेटा आदि के कारण प्राप्त होता है, स्क्रीनशॉट कार्रवाई / आउटपुट के प्रमाण को ट्रैक करने में मदद करता है। प्राप्त किया।
=> यहाँ सभी सेलेनियम ट्यूटोरियल की जाँच करें
इस ट्यूटोरियल में, हम सीखेंगे कि सेलेनियम स्क्रीनशॉट की आवश्यकता कहाँ है। हम एशोट पर चर्चा करेंगे और हम सेलेनियम में एशोट का उपयोग कैसे कर सकते हैं (एशोट की स्थापना और विन्यास) (), सेलेनियम में स्क्रीनशॉट कैप्चर करना सीखें (पूरे वेब पेज के लिए, पृष्ठ पर एक ही तत्व के लिए और वर्तमान में खुली खिड़की के लिए भी तुलना करें 2 चित्र) और फिर कुछ उदाहरण देखें जहां स्क्रीनशॉट अक्सर कैप्चर किए जाते हैं।
आप क्या सीखेंगे:
सेलेनियम स्क्रीनशॉट को समझना
उपरोक्त छवि जीमेल वेबसाइट से कोड को निष्पादित करते समय कैप्चर किए गए स्क्रीनशॉट का एक उदाहरण है। छवि यह पुष्टि करने में मदद करती है कि उपयोगकर्ता ने सही उपयोगकर्ता नाम और पासवर्ड के साथ ईमेल खाते में सफलतापूर्वक लॉग इन किया है।
इस प्रकार, स्क्रीनशॉट किसी कार्रवाई के प्रदर्शन के बाद प्राप्त क्रियाओं / आउटपुट को कैप्चर करने में बहुत सहायक होते हैं और इसलिए बिना किसी समस्या के किए जा रहे कार्य की पुष्टि करने में मदद करते हैं।
सेलेनियम स्वचालित रूप से स्क्रीनशॉट ले सकता है; हमें किसी भी कोड निष्पादन की प्रक्रिया में स्क्रीनशॉट के लिए कोड जोड़ना होगा जहां स्क्रीनशॉट की आवश्यकता होती है।
जहां सेलेनियम स्क्रीनशॉट की आवश्यकता होती है
निम्नलिखित संभावनाएं होंगी:
- जब एक वेब पेज पर एक तत्व खोजने में परेशानी होती है।
- जहां एक पृष्ठ पर वेब तत्वों को खोजने में एक टाइमआउट है।
- जब सिस्टम / एप्लिकेशन में कोई त्रुटि या समस्या होती है।
- जब एक जोरदार विफलता का सामना करना पड़ता है।
क्या है अशोट
आशोट () एक तृतीय पक्ष की उपयोगिता है जो स्क्रीनशॉट को कैप्चर करने के लिए सेलेनियम वेब ड्राइवर द्वारा समर्थित है।
स्क्रीनशॉट कैप्चर करने में Ashot () नीचे ऑपरेशन प्रदान करता है:
- पूरा पृष्ठ कैप्चर करना
- वेब तत्व को कैप्चर करना
- छवियों की तुलना
आइए देखें कि अगले भाग में यह कैसे काम करता है।
आशोट की विशेषताएं:
- पूरे पृष्ठ का स्क्रीनशॉट लेना संभव है।
- वेब तत्व का स्क्रीनशॉट लेना संभव है, जो विभिन्न प्लेटफार्मों जैसे एंड्रॉइड एमुलेटर ब्राउज़र, आईओएस सिम्युलेटर मोबाइल सफारी, विभिन्न डेस्कटॉप ब्राउज़र) पर समर्थित है।
- एक लचीला स्क्रीनशॉट तुलना प्रदान करता है।
- स्क्रीनशॉट सजाता है।
तीन चरणों में स्क्रीनशॉट ले सकते हैं आशा:
- पूर्ण पृष्ठ का स्क्रीनशॉट कैप्चर करता है।
- तत्व का आकार और स्थिति ज्ञात कीजिए।
- मूल स्क्रीनशॉट को क्रॉप करता है।
कैसे हम सेलेनियम में Ashot का उपयोग कर सकते हैं
अपनी मशीन पर आशा को डाउनलोड करने और कॉन्फ़िगर करने के लिए निम्नलिखित चरणों पर विचार करें:
- के पास जाओ संपर्क।
- आशोट के लिए मौजूद जार फ़ाइल का नवीनतम संस्करण खोजें।
- डाउनलोड करें और अपनी मशीन पर एक विशिष्ट पथ पर जार फ़ाइल सहेजें।
- अब ग्रहण में अपनी परियोजना में जार फ़ाइल जोड़ने के लिए — अपनी परियोजना पर जाएँ -> राइट क्लिक करें -> गुणों पर जाएँ -> बिल्ड पाथ चुनें -> लाइब्रेरी -> बाहरी जार जोड़ें
- उस मार्ग को ब्राउज़ करें जहां डाउनलोड की गई जार फ़ाइल सहेजी गई है।
- जार फ़ाइल चुनें, अप्लाई पर क्लिक करें और बंद करें।
सेलेनियम में स्क्रीनशॉट कैप्चर करने के लिए कैसे
सेलेनियम स्क्रीनशॉट कैप्चर करने के लिए अंतर्निहित कार्यक्षमता प्रदान करता है। आवश्यकता के अनुसार, TakesSreenshot सेलेनियम स्क्रिप्ट को निष्पादित करते समय स्क्रीनशॉट लेने के लिए इंटरफ़ेस का उपयोग किया जाता है। इस प्रकार, सेलेनियम वेबड्राइवर स्क्रीनशॉट को कैप्चर करने में मदद करता है जबकि कोड निष्पादित किया जा रहा है।
नीचे दिए गए अनुभाग में, हम उन विभिन्न स्क्रीनशॉट प्रकारों के बारे में जानेंगे जो कैप्चर किए गए हैं।
निम्नलिखित प्रकार हैं:
का स्क्रीनशॉट कैप्चर करना:
- वर्तमान खुली खिड़की
- पूरा वेब पेज
- बस एक विशिष्ट वेब तत्व
- मूल छवि के साथ स्क्रीनशॉट छवि की तुलना
आइए उपरोक्त बिंदुओं को विस्तार से समझते हैं।
(1) करंट ओपन विंडो
आइए हम वर्तमान में खुली खिड़की के लिए सेलेनियम में स्क्रीनशॉट से निपटने के लिए कोड के कार्यान्वयन को देखें:
package SeleniumPrograms; import java.io.File; import java.io.IOException; import java.util.concurrent.TimeUnit; import org.apache.commons.io.FileUtils; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.Test; @Test public class Screenshot { public static void main(String() args) throws IOException { // TODO Auto-generated method stub WebDriver drv = new FirefoxDriver(); drv.manage().window().maximize(); //always write wait code after this drv.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);//for page load drv.get('https://opensource-demo.orangehrmlive.com/'); //Testing webpage drv.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //for Implicit wait //Capturing the screenshot File f = ((TakesScreenshot) drv).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(f, new File('C:/Users/Chait/Desktop/Screenshots/screenshot01.png')); //screenshot copied from buffer is saved at the mentioned path. System.out.println('The Screenshot is captured.'); } }
नीचे दी गई छवि उपरोक्त कोड कार्यान्वयन का आउटपुट है। यहां, ऑरेंजएचआरएम साइट खुली है और लॉगिन पेज का स्क्रीनशॉट कैप्चर किया गया है।
(छवि स्रोत )
इस प्रकार, हम स्क्रीनशॉट को कैप्चर कर सकते हैं जहां कोड को निष्पादित करते समय कभी भी आवश्यकता होती है। कैप्चर किया गया स्क्रीनशॉट .png या .jpeg एक्सटेंशन वाली फ़ाइल में सहेजा जाता है। हमें वह रास्ता देना होगा जहां छवि फ़ाइल को सहेजने की आवश्यकता है।
# 2) संपूर्ण वेब पेज
आइए हम सेलेनियम वेबड्राइवर में आशोट की मदद से संपूर्ण पृष्ठ के स्क्रीनशॉट को कैप्चर करने के लिए नीचे दिए गए कार्यान्वयन कोड को देखते हैं। इसके लिए आइए एक पृष्ठ (जेमीटर-उपयोगकर्ता-परिभाषित-चर) के उदाहरण पर विचार करें - softwaretestinghelp.com ।
package SeleniumPrograms; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.concurrent.TimeUnit; import javax.imageio.ImageIO; import org.apache.commons.io.FileUtils; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import ru.yandex.qatools.ashot.AShot; import ru.yandex.qatools.ashot.Screenshot; import ru.yandex.qatools.ashot.shooting.ShootingStrategies; public class Screenshot_EntirePage { public static void main(String() args) throws InterruptedException, IOException { WebDriver drv = new FirefoxDriver(); drv.manage().window().maximize(); //always write wait code after this drv.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); //for page load drv.get('https://www.softwaretestinghelp.com/'); //Testing webpage drv.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //for Implicit wait WebElement auto = drv.findElement(By.xpath('//ul(@id='mega-menu-primary')/li(6)')); auto.click(); //click Automation tab WebElement jmeter = drv.findElement(By.linkText('JMeter')); //link to JMeter page jmeter.click(); //scroll down to open a link among various links, in the Video Tutorials section of the page JavascriptExecutor js = (JavascriptExecutor) drv; js.executeScript('window.scrollBy(0,1700)'); //scrolling downwards Thread.sleep(1500); WebElement udv = drv.findElement(By.linkText('User-Defined Variables')); udv.click(); //opening User-Defined Variables link Thread.sleep(1500); //Capturing the Screenshot with the help of ashot() Screenshot screenshot=new AShot().takeScreenshot(drv); ImageIO.write(screenshot.getImage(),'PNG',new File('C:\Users\Chait\Desktop\Screenshots\entirepage.png')); //The screenshot to be captured will be in .png image format and would be saved at above mentioned path. System.out.println('Screenshot for full page is captured successfully!'); } }
यहां ही jmeter- उपयोगकर्ता-परिभाषित-चर हमारी वेबसाइट का पेज: www.softwaretestinghelp.com खोला गया है और फिर हमने इस पूर्ण वेब पेज (aselen की मदद से) सेलेनियम में (.png) प्रारूप में स्क्रीनशॉट लिया है और वांछित पथ पर सहेजा गया है। उसी तरह हम किसी भी वेब पेज के लिए पूरे पेज का स्क्रीनशॉट कैप्चर कर सकते हैं।
इस प्रकार, पूरे पृष्ठ के स्क्रीनशॉट को कैप्चर करने के लिए उपरोक्त कोड को लागू करने पर, प्राप्त आउटपुट पूर्ण वेब पेज स्क्रीनशॉट के लिए नीचे की छवि में दिखाया गया है।
# 3) एक वेब तत्व
वेब पेज पर एक विशिष्ट वेब तत्व के स्क्रीनशॉट को कैप्चर करने के लिए सेलेनियम वेबड्राइवर में आशा के उपयोग के साथ, नीचे दिए गए कार्यान्वयन कोड को देखें।
package SeleniumPrograms; import java.io.File; import java.io.IOException; import java.util.concurrent.TimeUnit; import javax.imageio.ImageIO; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.Test; import ru.yandex.qatools.ashot.AShot; import ru.yandex.qatools.ashot.Screenshot; import ru.yandex.qatools.ashot.shooting.ShootingStrategies; @Test public class Screenshot_WebEle_Ashot { public static void main(String() args) throws IOException { // TODO Auto-generated method stub WebDriver drv = new FirefoxDriver(); drv.manage().window().maximize(); //always write wait code after this drv.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); //for page load drv.get('https://opensource-demo.orangehrmlive.com/'); //Testing webpage drv.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //for Implicit wait WebElement uname = drv.findElement(By.id('txtUsername')); //Username....ID.... uname.sendKeys('Admin'); WebElement pword = drv.findElement(By.id('txtPassword')); //Password....ID.... pword.sendKeys('admin123'); WebElement login_b = drv.findElement(By.xpath('//input(@id='btnLogin')')); login_b.click(); //Login button....XPATH.... WebElement ele = drv.findElement(By.linkText('Maintenance')); ele.click(); //opening link for element for which we want screenshot // pass driver as well as the element in takeScreenshot() method. Screenshot Screenshot_webele = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(100)).takeScreenshot(drv, ele); // For saving the screenshot in .png/.jpeg format at the desired location ImageIO.write(Screenshot_webele.getImage(),'png',new File('C:\Users\Chait\Desktop\Screenshots\element.jpeg')); System.out.println('Screenshot for specified element captured successfully!'); } }
इस प्रकार एक विशिष्ट तत्व (यहां रखरखाव टैब) के स्क्रीनशॉट को कैप्चर करने के लिए उपरोक्त कोड को लागू करने पर, प्राप्त आउटपुट निम्न छवि में दिखाया गया है।
यहां, हम टैब 'रखरखाव' को एक तत्व के रूप में चुनते हैं जिसके लिए एक स्क्रीनशॉट आवश्यक है। उस पथ का उल्लेख करें जहां हम चाहते हैं कि स्क्रीनशॉट सहेजा जाए। उसी तरह हम किसी भी अन्य तत्व के लिए स्क्रीनशॉट को कैप्चर कर सकते हैं और साथ ही ऐसी किसी भी वेब साइट पर भी।
# 4) मूल छवि के साथ तुलना स्क्रीनशॉट
वेब पेज पर लोगो तत्व के स्क्रीनशॉट को कैप्चर करने और मूल लोगो के साथ तुलना करने के लिए सेलेनियम वेबड्राइवर में आशा के उपयोग के साथ नीचे दिए गए कार्यान्वयन कोड पर एक नजर डालते हैं।
इसके लिए आइए हम इसके उदाहरण पर विचार करें naukri.com :
package SeleniumPrograms; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.concurrent.TimeUnit; import javax.imageio.ImageIO; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import ru.yandex.qatools.ashot.AShot; import ru.yandex.qatools.ashot.Screenshot; import ru.yandex.qatools.ashot.comparison.ImageDiff; import ru.yandex.qatools.ashot.comparison.ImageDiffer; public class Screen_Compare { public static void main(String() args) throws IOException { // TODO Auto-generated method stub WebDriver drv = new FirefoxDriver(); drv.manage().window().maximize(); //always write wait code after this drv.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); //for page load drv.get('https://www.naukri.com/nlogin/login'); //Testing webpage drv.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //for Implicit wait // Finding the logo element and capturing its screenshot WebElement logo = drv.findElement(By.xpath('//a(@class='nLogo fl')/img')); Screenshot logoSrcshot = new AShot().takeScreenshot(drv, logo); // Reading the image for comparision BufferedImage expectedImage = ImageIO.read(new File('C:\Users\Chait\Desktop\naukri_Logo.png')); BufferedImage actualImage = logoSrcshot.getImage(); ImageDiffer img_differnece = new ImageDiffer(); // Creating ImageDiffer object and calling the method makeDiff() ImageDiff differnece = img_differnece.makeDiff(actualImage, expectedImage); if (differnece.hasDiff() == true) //Checking the difference using in-built functions) { System.out.println('Both logo images matched') //in case when no difference found } else { System.out.println('The logo images are different'); //in case when difference found } } }
इस प्रकार एक लोगो तत्व (यहां naukri.com लोगो) के स्क्रीनशॉट की तुलना के लिए उपरोक्त कोड को लागू करने पर, प्राप्त आउटपुट निम्न छवि में दिखाया गया है।
यहां, हम 'naukri.com' का लोगो चुनते हैं, इसके स्क्रीनशॉट को कैप्चर करते हैं, और फिर इसकी तुलना मूल लोगो से की जाती है। अंतर्निहित कार्यों का उपयोग करके छवियों के बीच अंतर पाया जाता है। यदि 2 लोगो छवियों में कोई अंतर नहीं पाया जाता है, तो प्रोग्राम आउटपुट को प्रिंट करता है। दोनों लोगो के चित्र मेल खाते थे 'और प्रिंट' लोगो चित्र अलग हैं ”।
उदाहरण जहां स्क्रीनशॉट अक्सर कैप्चर किए जाते हैं
# 1) लॉगआउट पुष्टिकरण
वेबसाइट पर लॉगिन करने के लिए, हमें सही उपयोगकर्ता नाम और पासवर्ड दर्ज करना होगा जिसके बाद हम वेबसाइट में लॉग इन करेंगे। फिर उपयोगकर्ता आवश्यक विकल्प करता है और एक बार काम के साथ, उपयोगकर्ता लॉग आउट हो जाता है।
इसलिए, यदि हम लॉग आउट होने के बाद स्क्रीनशॉट के लिए एक कोड प्रदान करते हैं, तो फिर से लॉगिन पेज दिखाई देगा, जो लॉगआउट कार्रवाई की पुष्टि करेगा। कृपया अधिक जानकारी के लिए नीचे दी गई छवि देखें:
# 2) एक नए बनाए गए रिकॉर्ड की पुष्टि
नया रिकॉर्ड बनाने के बाद स्क्रीनशॉट के लिए कोड जोड़ना सफलतापूर्वक बनाए जा रहे रिकॉर्ड की पुष्टि करता है। अधिक जानकारी के लिए कृपया नीचे स्क्रीनशॉट देखें।
मामले में जब रिकॉर्ड नहीं बनाया जाता है, तो कोड स्क्रीनशॉट को पकड़ने के लिए आगे नहीं बढ़ेगा और यह पुष्टि करेगा कि रिकॉर्ड सफलतापूर्वक नहीं बनाया जा रहा है।
# 3) अनुपलब्ध / गलत आउटपुट का उदाहरण
इस उदाहरण में ऑरेंजएचआरएम वेबसाइट पर जॉब टाइटल के लिए एक नया रिकॉर्ड बनाना शामिल है। यहाँ, फील्ड जॉब टाइटल को Title * चिह्नित किया गया है, जिसका अर्थ है कि यह एक अनिवार्य फील्ड है। इसलिए, रिकॉर्ड तब तक नहीं बनाया जाएगा जब तक कि आवश्यक फ़ील्ड भर न जाएं और तब ही हम रिकॉर्ड को सहेज पाएंगे। अधिक जानकारी के लिए कृपया नीचे स्क्रीनशॉट देखें।
निष्कर्ष
इस प्रकार, इस लेख में हमने देखा है, जहां सेलेनियम स्क्रीनशॉट की आवश्यकता होती है, फिर हम सेलेनियम में स्क्रीनशॉट को कैसे संभाल सकते हैं, क्या है, यह कैसे डाउनलोड किया जा सकता है, कॉन्फ़िगर किया जा सकता है, और वास्तव में सेलेनियम में उपयोग किया जाता है। हमने स्क्रीनशॉट को संभालने के लिए कोड के कार्यान्वयन को समझा और कुछ उदाहरण भी देखे जहां स्क्रीनशॉट अक्सर कैप्चर किए जाते हैं।
=> पूरा सेलेनियम गाइड के माध्यम से पढ़ें
अनुशंसित पाठ
- 30+ सर्वश्रेष्ठ सेलेनियम ट्यूटोरियल: वास्तविक उदाहरणों के साथ सेलेनियम जानें
- सेलेनियम उदाहरणों के साथ पाठ ट्यूटोरियल द्वारा तत्व का पता लगाएं
- सेलेनियम वेबड्राइवर का परिचय - सेलेनियम ट्यूटोरियल # 8
- क्रोमड्राइव सेलेनियम ट्यूटोरियल: क्रोम पर सेलेनियम वेबड्राइवर टेस्ट
- सेलेनियम वेबड्राइवर स्विचटॉ () विधि का उपयोग करके iFrames को संभालना
- सेलेनियम के साथ ग्रैडल प्रोजेक्ट कैसे बनाएं
- सेलेनियम वेबड्राइवर में अलर्ट / पॉपअप कैसे हैंडल करें - सेलेनियम ट्यूटोरियल # 16
- सेलेनियम वेबड्राइवर में स्क्रॉल बार को कैसे हैंडल करें