सेलेनियम वेबड्राइवर में स्क्रीनशॉट कैसे लें

विषय - सूची:

Anonim

सेलेनियम वेबड्राइवर में स्क्रीनशॉट

बग विश्लेषण के लिए सेलेनियम वेबड्राइवर में एक स्क्रीनशॉट का उपयोग किया जाता है। सेलेनियम वेबड्राइवर निष्पादन के दौरान स्वचालित रूप से स्क्रीनशॉट ले सकता है। लेकिन अगर उपयोगकर्ताओं को अपने दम पर स्क्रीनशॉट कैप्चर करने की आवश्यकता होती है, तो उन्हें टेकस्क्रीशॉट विधि का उपयोग करने की आवश्यकता होती है जो स्क्रीनशॉट लेने और इसे सेलेनियम में संग्रहीत करने के लिए वेबड्राइव को सूचित करता है।

इस ट्यूटोरियल में आप सीखेंगे,

  • सेलेनियम वेबड्राइवर का उपयोग करके स्क्रीनशॉट कैप्चर करें
  • Ashot API क्या है?
  • Ashot API डाउनलोड और कॉन्फ़िगर कैसे करें?
  • एशोट एपीआई के साथ पूर्ण पृष्ठ स्क्रीनशॉट कैप्चर करें
  • पृष्ठ के किसी विशेष तत्व का स्क्रीनशॉट लेना
  • एशोट का उपयोग करते हुए छवि तुलना

सेलेनियम वेबड्राइवर का उपयोग करके स्क्रीनशॉट कैप्चर करें

सेलेनियम में स्क्रीनशॉट लेना एक 3 चरण प्रक्रिया है

चरण 1) वेब ड्राइवर ऑब्जेक्ट को टेकसेंशॉट में कनवर्ट करें

TakesSreenshot scrShot = ((TakesScreenshot) webdriver);

चरण 2) छवि फ़ाइल बनाने के लिए getScreenshotAs विधि को कॉल करें

फ़ाइल SrcFile = scrShot.getScreenshotAs (OutputType.FILE);

चरण 3) फ़ाइल को वांछित स्थान पर कॉपी करें

उदाहरण: इस उदाहरण में हम http://demo.guru99.com/V4/ का स्क्रीन कैप्चर करेंगे और इसे C: /Test.png.webp के रूप में सहेजेंगे।

पैकेजआयात java.io.File;आयात org.apache.commons.io.FileUtils;आयात org.openqa.selenium.OutputType;आयात org.openqa.selenium.TakesScreenshot;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.firefox.FirefoxDriver;आयात org.testng.annotations.Test;सार्वजनिक वर्ग@परीक्षासार्वजनिक शून्य परीक्षणWebDriver ड्राइवर;System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");ड्राइवर = नया फ़ायरफ़ॉक्सड्राइवर ();// गोटो उरDriver.get ("http://demo.guru99.com/V4/");// कॉल ले स्क्रीनशॉट फ़ंक्शनthis.takeSnapShot (ड्राइवर, "c: //test.png.webp");}/ *** यह फ़ंक्शन स्क्रीनशॉट लेगा* @ अपरम वेबड्राइवर* @ चरण फ़ाइलविथपथ* @ भ्रांतियाँ* /सार्वजनिक स्थैतिक शून्य लेना// वेब ड्राइवर ऑब्जेक्ट को टेकसर्चशॉट में कनवर्ट करेंTakesSreenshot scrShot = ((TakesScreenshot) webdriver);// कॉल getScreenshotAs छवि फ़ाइल बनाने के लिए विधिफ़ाइल SrcFile = scrShot.getScreenshotAs (OutputType.FILE);// छवि फ़ाइल को नए गंतव्य पर ले जाएंफ़ाइल गंतव्य = नई फ़ाइल (फ़ाइलविथपथ);// गंतव्य पर कॉपी फ़ाइलFileUtils.copyFile (SrcFile, DestFile);}}

नोट: सेलेनियम संस्करण 3.9.0 और इसके बाद का संस्करण अपाचे कॉमन्स IO JAR प्रदान नहीं करता है। आप बस उन्हें यहां डाउनलोड कर सकते हैं और उन्हें अपनी परियोजना में बुला सकते हैं

Ashot API क्या है?

Ashot स्क्रीनशॉट को कैप्चर करने के लिए सेलेनियम वेबड्राइवर द्वारा समर्थित यैंडेक्स द्वारा एक तृतीय पक्ष उपयोगिता है। यह एक व्यक्तिगत WebElement के स्क्रीनशॉट के साथ-साथ एक पृष्ठ के पूर्ण-पृष्ठ स्क्रीनशॉट को लेता है, जो स्क्रीन आकार से अधिक महत्वपूर्ण है।

Ashot API डाउनलोड और कॉन्फ़िगर कैसे करें?

Ashot API को कॉन्फ़िगर करने के दो तरीके हैं

  • 1. मावेन का उपयोग करना
  • 2. किसी भी उपकरण का उपयोग किए बिना मैन्युअल रूप से

मावेन के माध्यम से कॉन्फ़िगर करने के लिए:

  • Https://mvnrepository.com/artifact/ru.yandex.qatools.ashot/ashot पर जाएं
  • अभी के लिए नवीनतम संस्करण पर क्लिक करें। यह 1.5.4 है
  • निर्भरता कोड की प्रतिलिपि बनाएँ और अपनी pom.xml फ़ाइल में जोड़ें

  • फ़ाइल सहेजें, और मावेन आपके निर्माण पथ में जार जोड़ देगा
  • और अब आप तैयार हैं !!!

किसी भी निर्भरता उपकरण के बिना मैन्युअल रूप से कॉन्फ़िगर करने के लिए

  1. Https://mvnrepository.com/artifact/ru.yandex.qatools.ashot/ashot पर जाएं
  2. अभी के लिए नवीनतम संस्करण पर क्लिक करें। यह 1.5.4 है
  3. जार पर क्लिक करें, डाउनलोड करें और इसे अपनी मशीन पर सहेजें

  1. अपने बिल्ड पथ में जार फ़ाइल जोड़ें:
  2. ग्रहण में, प्रोजेक्ट पर राइट क्लिक करें -> गुणों पर जाएं -> बिल्ड पाथ -> लाइब्रेरी -> बाहरी जार जोड़ें
  3. जार फ़ाइल का चयन करें
  4. लागू करें और बंद करें

एशोट एपीआई के साथ पूर्ण पृष्ठ स्क्रीनशॉट कैप्चर करें

चरण 1) एक ऐशोट ऑब्जेक्ट बनाएं और स्क्रीन साइज पेज के लिए स्क्रीनशॉट चाहते हैं तो टेकस्क्रीशॉट () विधि को कॉल करें।

स्क्रीनशॉट स्क्रीनशॉट = नया आशोट () .Screenshot (ड्राइवर);

लेकिन अगर आप पेज का स्क्रीनशॉट बड़ा चाहते हैं तो स्क्रीन साइज़, पॉलिसी सेट करने के लिए takeScreenshot () मेथड को कॉल करने से पहले शूटिंगस्ट्रेगेटी () विधि को कॉल करें। इसके बाद वेबसाइवर को पास करने के लिए एक विधि सेसक्रींश () कॉल करें,

स्क्रीनशॉट स्क्रीनशॉट = नया एशोट ()।

यहां 1000 को मिलीसेकेंड में स्क्रॉल किया जाता है, इसलिए स्क्रीनशॉट लेने के लिए, प्रोग्राम प्रत्येक 1000 मिसे के लिए स्क्रॉल करेगा।

चरण 2): अब, स्क्रीनशॉट से छवि प्राप्त करें और इसे फ़ाइल में लिखें। आप फ़ाइल प्रकार को jpg.webp, png, आदि प्रदान कर सकते हैं।

ImageIO.write (स्क्रीनशॉट.getImage (), "jpg.webp", नई फ़ाइल ("। \\ स्क्रीनशॉट \\ fullimage.jpg.webp"));

एक पृष्ठ का पूर्ण-पृष्ठ स्क्रीनशॉट लेना जो स्क्रीन आकार से बड़ा है।

उदाहरण: यहां http://demo.guru99.com/test/guru99home/ का पूर्ण-पृष्ठ स्क्रीनशॉट कैप्चर करने और "स्क्रीनशॉट.jpg.webp" फ़ाइल को सहेजने का उदाहरण है।

Ashot API के ShootingStrategy वर्ग का उपयोग करने के कारण, हम स्क्रीन के आकार से बड़े पृष्ठ की पूर्ण छवि कैप्चर कर पाएंगे। यहाँ कार्यक्रम है:

पैकेज गुरु 99;आयात java.io.File;आयात java.io.IOException;आयात javax.imageio.ImageIO;आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebElement;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.chrome.ChromeDriver;import ru.yandex.qatools.ashot.AShot;आयात ru.yandex.qatools.ashot.Screenshot;आयात ru.yandex.qatools.ashot.shooting.SourcingStrategies;सार्वजनिक वर्गसार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) IOException {फेंकता हैSystem.setProperty ("webdriver.chrome.driver", "c: \\ chromedriver.exe");WebDriver ड्राइवर = नया ChromeDriver ();Driver.get ("http://demo.guru99.com/test/guru99home/");Driver.manage ()। window ()। मैक्सिमम ();स्क्रीनशॉट = नया एशोट ()।ImageIO.write (स्क्रीनशॉट.getImage (), "jpg.webp", नई फ़ाइल ("c: \\ ElementScreenshot.jpg.webp"));}}

पृष्ठ के किसी विशेष तत्व का स्क्रीनशॉट लेना

उदाहरण: यहाँ http://demo.guru99.com/test/guru99home/ पृष्ठ पर गुरु 99 लोगो के तत्व स्क्रीनशॉट को कैप्चर करने का उदाहरण है और "ElementScreenshot.jpg.webp" फाइल को सेव करना है। यहाँ कोड है:

पैकेज गुरु 99;आयात java.io.File;आयात java.io.IOException;आयात javax.imageio.ImageIO;आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebElement;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.chrome.ChromeDriver;import ru.yandex.qatools.ashot.AShot;आयात ru.yandex.qatools.ashot.Screenshot;आयात ru.yandex.qatools.ashot.shooting.SourcingStrategies;सार्वजनिक वर्गसार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) IOException {फेंकता हैSystem.setProperty ("webdriver.chrome.driver", "c: \\ chromedriver.exe");WebDriver ड्राइवर = नया ChromeDriver ();Driver.get ("http://demo.guru99.com/test/guru99home/");Driver.manage ()। window ()। मैक्सिमम ();// स्क्रीनशॉट लेने के लिए तत्व का पता लगाएंWebElement element = driver.findElement (By.xpath ("// * [@ id = \" साइट-नाम \ "] / a [1] / img");// ड्राइवर पास एलिमेंट के साथ टेकस्क्रीहोट () विधि में भी।स्क्रीनशॉट = नया एशोट ()।ImageIO.write (स्क्रीनशॉट.getImage (), "jpg.webp", नई फ़ाइल ("c: \\ ElementScreenshot.jpg.webp"));}}

एशोट का उपयोग करते हुए छवि तुलना

पैकेज गुरु 99;आयात java.awt.image.BufferedImage;आयात java.io.File;आयात java.io.IOException;आयात javax.imageio.ImageIO;आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.WebElement;आयात org.openqa.selenium.chrome.ChromeDriver;import ru.yandex.qatools.ashot.AShot;आयात ru.yandex.qatools.ashot.Screenshot;आयात ru.yandex.qatools.ashot.comparison.ImageDiff;आयात ru.yandex.qatools.ashot.comparison.ImageDiffer;सार्वजनिक वर्ग TestImageComaprison {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) IOException {फेंकता हैSystem.setProperty ("webdriver.chrome.driver", "C: \\ chromedriver.exe");WebDriver ड्राइवर = नया ChromeDriver ();Driver.get ("http://demo.guru99.com/test/guru99home/");// तत्व ढूंढें और स्क्रीनशॉट लेंWebElement logoElement = driver.findElement (By.xpath ("// * @ id = \" साइट-नाम \ "] / [a] [1] / img");स्क्रीनशॉट logoElementScreenshot = new AShot ()। TakeScreenshot (ड्राइवर, logoElemnent);// तुलना करने के लिए छवि पढ़ेंबफ़रेडइमेज अपेक्षितइमेज = ImageIO.read (नई फ़ाइल ("C: \\ Guru99logo.png.webp"));बफ़रेडइमेज एक्टिविमेज = logoElementScreenshot.getImage ();// ImageDiffer ऑब्जेक्ट बनाएं और कॉल विधि makeDiff ()ImageDiffer imgDiff = new ImageDiffer ();ImageDiff diff = imgDiff.makeDiff (realImage, expectImage);if (diff.hasDiff () == true) {System.out.println ("छवियाँ समान हैं");} अन्य {System.out.println ("छवियाँ अलग हैं");}Driver.quit ();}}

सारांश

  • Ashot API Yandex से एक फ्रीवेयर है।
  • यह सेलेनियम में स्क्रीनशॉट लेने के लिए एक उपयोगिता है।
  • यह आपको डेस्कटॉप ब्राउज़र, आईओएस सिम्युलेटर मोबाइल सफारी, एंड्रॉइड एमुलेटर ब्राउज़र जैसे विभिन्न प्लेटफार्मों पर एक व्यक्तिगत वेबलेमेंट का स्क्रीनशॉट लेने में मदद करता है।
  • यह स्क्रीन के आकार से बड़े पृष्ठ का पृष्ठ स्क्रीनशॉट ले सकता है।
  • यह सुविधा सेलेनियम संस्करण 3 में हटा दी गई है, इसलिए आशोट एपीआई एक अच्छा विकल्प है।
  • यह स्क्रीनशॉट को सजा सकता है।
  • यह एक स्क्रीनशॉट तुलना प्रदान करता है।

श्राद्ध दवे द्वारा योगदान के कारण संभव हुआ