Ekrānuzņēmums Selenium Webdriver
Ekrānuzņēmums in Selēns Webdriver izmanto bug analīzei. Izpildes laikā Selenium tīmekļa draiveris var automātiski uzņemt ekrānuzņēmumus. Bet, ja lietotājiem pašiem jāaptver ekrānuzņēmums, viņiem jāizmanto TakeScreenshot metode, kas informē WebDrive par ekrānuzņēmuma uzņemšanu un saglabāšanu Selenium.
Šajā apmācībā jūs uzzināsiet,
- Uzņemiet ekrānuzņēmumu, izmantojot Selenium WebDriver
- Kas ir Ashot API?
- Kā lejupielādēt un konfigurēt Ashot API?
- Uzņemiet pilnas lapas ekrānuzņēmumu, izmantojot AShot API
- Ekrānuzņēmuma uzņemšana no konkrēta lapas elementa
- Attēlu salīdzinājums, izmantojot AShot
Uzņemiet ekrānuzņēmumu, izmantojot Selenium WebDriver
Ekrānuzņēmuma uzņemšana selēnā ir trīspakāpju process
1. solis. Konvertējiet tīmekļa draivera objektu uz TakeScreenshot
TakesScreenshot scrShot = ((TakesScreenshot) tīmekļa draiveris);
2. solis. Lai izveidotu attēla failu, izsauciet metodi getScreenshotAs
Fails SrcFile = scrShot.getScreenshotAs (OutputType.FILE);
3. solis. Kopējiet failu vēlamajā vietā
Piemērs: Šajā piemērā mēs ņemsim ekrāna uztveršanu vietnē http://demo.guru99.com/V4/ un saglabāsim to kā C: /Test.png.webp
pakotne Guru99TakeScreenshot;importēt java.io.File;importēt org.apache.commons.io.FileUtils;importēt org.openqa.selenium.OutputType;importēt org.openqa.selenium.TakesScreenshot;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.firefox.FirefoxDriver;importēt org.testng.annotations.Test;publiskā klase Guru99TakeScreenshot {@Pārbaudepublic void testGuru99TakeScreenShot () izmet izņēmumu {WebDriver draiveris;System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");draiveris = jauns FirefoxDriver ();// goto urldriver.get ("http://demo.guru99.com/V4/");// Zvana uzņemšanas funkcijathis. takeSnapShot (draiveris, "c: //test.png.webp");}/ *** Šī funkcija uzņems ekrānuzņēmumu* @param tīmekļa draiveris* @param fileWithPath* @ throws izņēmums* /public static void takeSnapShot (WebDriver tīmekļa draiveris, String fileWithPath) izmet izņēmumu {// Web draivera objekta konvertēšana uz TakeScreenshotTakesScreenshot scrShot = ((TakesScreenshot) tīmekļa draiveris);// Zvana getScreenshotAs metode attēla faila izveideiFails SrcFile = scrShot.getScreenshotAs (OutputType.FILE);// Pārvietot attēla failu uz jaunu galamērķiFile DestFile = jauns fails (fileWithPath);// Kopēt failu galamērķīFileUtils.copyFile (SrcFile, DestFile);}}
PIEZĪME: Selēna 3.9.0 un jaunāka versija nenodrošina Apache Commons IO JAR. Jūs varat tos vienkārši lejupielādēt šeit un piezvanīt savā projektā
Kas ir Ashot API?
Ashot ir trešās puses utilīta, ko Yandex atbalsta Selenium WebDriver, lai uzņemtu ekrānuzņēmumus. Tas uzņem atsevišķa WebElement ekrānuzņēmumu, kā arī pilnas lapas ekrānuzņēmumu, kas ir daudz nozīmīgāks nekā ekrāna izmērs.
Kā lejupielādēt un konfigurēt Ashot API?
Ashot API konfigurēšanai ir divas metodes
- 1. Izmantojot Maven
- 2. Manuāli, neizmantojot nevienu rīku
Lai konfigurētu, izmantojot Maven:
- Atveriet vietni https://mvnrepository.com/artifact/ru.yandex.qatools.ashot/ashot
- Pagaidām noklikšķiniet uz jaunākās versijas. Ir 1.5.4
- Kopējiet kodu Atkarība un pievienojiet savam failam pom.xml
- Saglabājiet failu, un Maven pievienos burku jūsu būvēšanas ceļam
- Un tagad jūs esat gatavs !!!
Lai konfigurētu manuāli bez jebkāda atkarības rīka
- Atveriet vietni https://mvnrepository.com/artifact/ru.yandex.qatools.ashot/ashot
- Pagaidām noklikšķiniet uz jaunākās versijas. Ir 1.5.4
- Noklikšķiniet uz burkas, lejupielādējiet un saglabājiet to savā datorā
- Pievienojiet burka failu būvēšanas ceļā:
- Programmā Eclipse ar peles labo pogu noklikšķiniet uz projekta -> dodieties uz rekvizītiem -> Veidot ceļu -> Bibliotēkas -> Pievienot ārējās burkas
- Atlasiet burkas failu
- Lietot un aizvērt
Uzņemiet pilnas lapas ekrānuzņēmumu, izmantojot AShot API
1. solis) Izveidojiet objektu Ashot un izsauciet metodi takeScreenshot (), ja vēlaties tikai ekrāna izmēra lapas ekrānuzņēmumu.
Ekrānuzņēmuma ekrānuzņēmums = jauns Ashot (). TakeScreenshot (draiveris);
Bet, ja vēlaties, lai lapas ekrānuzņēmums būtu lielāks nekā ekrāna izmērs, izsauciet metodi shootingStrategy (), pirms izsaucat metodi takeScreenshot (), lai iestatītu politiku. Pēc tam izsauciet metodi takeScreenshot (), nododot, piemēram, tīmekļa draiveri,
Ekrānuzņēmuma ekrānuzņēmums = new AShot (). ShootingStrategy (ShootingStrategies.viewportPasting (1000)). TakeScreenshot (draiveris);
Šeit 1000 tiek ritināts milisekundēs, tāpēc, lai uzņemtu ekrānuzņēmumu, programma ritinās katru 1000 ms.
2. solis): Tagad iegūstiet attēlu no ekrānuzņēmuma un ierakstiet to failā. Faila tipu varat norādīt kā jpg.webp, png utt.
ImageIO.write (screenshot.getImage (), "jpg.webp", jauns fails (". \\ screenshot \\ fullimage.jpg.webp");
Pilnas lapas ekrānuzņēmuma uzņemšana no lapas, kas ir lielāka par ekrāna izmēru.
Piemērs: Šeit ir piemērs, kā uzņemt pilnas lapas ekrānuzņēmumu vietnē http://demo.guru99.com/test/guru99home/ un saglabāt failā “screenshot.jpg.webp”.
Sakarā ar Ashot API klases ShootingStrategy izmantošanu mēs varēsim uzņemt pilnu lapas attēlu, kas ir lielāks par ekrāna izmēru. Šeit ir programma:
pakete Guru99;importēt java.io.File;importēt java.io.IOException;importēt javax.imageio.ImageIO;importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.chrome.ChromeDriver;importēt ru.yandex.qatools.ashot.AShot;importēt ru.yandex.qatools.ashot.Screenshot;importēt ru.yandex.qatools.ashot.shooting.ShootingStrategies;publiskā klase TestScreenshotUsingAshot {public static void main (String [] args) met IOException {System.setProperty ("webdriver.chrome.driver", "c: \\ chromedriver.exe");WebDriver draiveris = jauns ChromeDriver ();driver.get ("http://demo.guru99.com/test/guru99home/");draiveris.pārvaldīt (). logs (). maksimizēt ();Ekrānuzņēmums = jauns AShot (). ShootingStrategy (ShootingStrategies.viewportPasting (1000)). TakeScreenshot (draiveris);ImageIO.write (screenshot.getImage (), "jpg.webp", jauns fails ("c: \\ ElementScreenshot.jpg.webp");}}
Ekrānuzņēmuma uzņemšana no konkrēta lapas elementa
Piemērs: Šeit ir Guru 99 logotipa elementa ekrānuzņēmuma tveršanas piemērs lapā http://demo.guru99.com/test/guru99home/ un saglabājiet failā "ElementScreenshot.jpg.webp". Šeit ir kods:
pakete Guru99;importēt java.io.File;importēt java.io.IOException;importēt javax.imageio.ImageIO;importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.chrome.ChromeDriver;importēt ru.yandex.qatools.ashot.AShot;importēt ru.yandex.qatools.ashot.Screenshot;importēt ru.yandex.qatools.ashot.shooting.ShootingStrategies;publiskā klase TestElementScreenshotUsingAshot {public static void main (String [] args) met IOException {System.setProperty ("webdriver.chrome.driver", "c: \\ chromedriver.exe");WebDriver draiveris = jauns ChromeDriver ();driver.get ("http://demo.guru99.com/test/guru99home/");draiveris.pārvaldīt (). logs (). maksimizēt ();// Atrodiet elementu, lai uzņemtu ekrānuzņēmumuWebElement elements = driver.findElement (By.xpath ("// * [@ id = \" vietnes nosaukums \ "] / a [1] / img"));// Kopā ar vadītāja caurlaides elementu arī takeScreenshot () metodē.Ekrānuzņēmums = jauns AShot (). ShootingStrategy (ShootingStrategies.viewportPasting (1000)). TakeScreenshot (draiveris, elements);ImageIO.write (screenshot.getImage (), "jpg.webp", jauns fails ("c: \\ ElementScreenshot.jpg.webp");}}
Attēlu salīdzinājums, izmantojot AShot
pakete Guru99;importēt java.awt.image.BufferedImage;importēt java.io.File;importēt java.io.IOException;importēt javax.imageio.ImageIO;importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.chrome.ChromeDriver;importēt ru.yandex.qatools.ashot.AShot;importēt ru.yandex.qatools.ashot.Screenshot;importēt ru.yandex.qatools.ashot.comparison.ImageDiff;importēt ru.yandex.qatools.ashot.comparison.ImageDiffer;publiskā klase TestImageComaprison {public static void main (String [] args) met IOException {System.setProperty ("webdriver.chrome.driver", "C: \\ chromedriver.exe");WebDriver draiveris = jauns ChromeDriver ();driver.get ("http://demo.guru99.com/test/guru99home/");// Atrodiet elementu un veiciet ekrānuzņēmumuWebElement logoElement = driver.findElement (By.xpath ("// * [@ id = \" vietnes nosaukums \ "] / a [1] / img"));Screenshot logoElementScreenshot = new AShot (). TakeScreenshot (draiveris, logoElemnent);// lasīt attēlu, lai salīdzinātuBufferedImage expectedImage = ImageIO.read (jauns fails ("C: \\ Guru99logo.png.webp"));BufferedImage actualImage = logoElementScreenshot.getImage ();// Izveidot objektu ImageDiffer un izsaukuma metodi makeDiff ()ImageDiffer imgDiff = jauns ImageDiffer ();ImageDiff diff = imgDiff.makeDiff (faktiskais attēls, paredzamais attēls);ja (diff.hasDiff () == true) {System.out.println ("Attēli ir vienādi");} cits {System.out.println ("Attēli ir atšķirīgi");}vadītājs.iziet ();}}
Kopsavilkums
- Ashot API ir Yandex bezmaksas programmatūra.
- Tā ir noderīga ekrānuzņēmuma uzņemšanai Selenium.
- Tas palīdz jums veikt atsevišķas WebElement ekrānuzņēmumu dažādās platformās, piemēram, darbvirsmas pārlūkprogrammās, iOS Simulator Mobile Safari, Android Emulator Browser.
- Tas var veikt lapas ekrānuzņēmumu, kura lapa ir lielāka par ekrāna izmēru.
- Šī funkcija selēna 3. versijā ir noņemta, tāpēc Ashot API ir laba iespēja.
- Tas var dekorēt ekrānuzņēmumus.
- Tas nodrošina ekrānuzņēmumu salīdzinājumu.
Tas ir iespējams, pateicoties Šraddha Deiva ieguldījumam