Ekraanipilt veebisaidil Selenium
Ekraanipildi Seleen Webdriver kasutatakse bug analüüsi. Seleniumi veebidraiver saab käivitamise ajal automaatselt ekraanipilte teha. Kui aga kasutajatel on vaja ekraanipilt iseseisvalt jäädvustada, peavad nad kasutama meetodit TakeScreenshot, mis annab WebDrive'ile teada, et ekraanipilt tehakse ja see Seleeni salvestatakse.
Selles õpetuses saate teada,
- Jäädvustage ekraanipilt, kasutades Selenium WebDriveri
- Mis on Ashoti API?
- Kuidas Ashot API-d alla laadida ja konfigureerida?
- Jäädvustage kogu lehe ekraanipilt AShot API abil
- Lehe konkreetse elemendi ekraanipildi tegemine
- Piltide võrdlus AShoti abil
Jäädvustage ekraanipilt, kasutades Selenium WebDriveri
Ekraanipildi tegemine seleenis on kolmeastmeline protsess
1. samm. Teisendage veebidraiveri objekt TakeScreenshotiks
TakesScreenshot scrShot = ((TakesScreenshot) veebidraiver);
2. samm. Pildifaili loomiseks helistage meetodile getScreenshotAs
Fail SrcFile = scrShot.getScreenshotAs (OutputType.FILE);
Samm 3) Kopeerige fail soovitud asukohta
Näide: Selles näites võtame ekraanipildi saidilt http://demo.guru99.com/V4/ ja salvestame selle kui C: /Test.png.webp
pakett Guru99TakeScreenshot;import java.io.File;importige 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;avaliku klassi Guru99TakeScreenshot {@Testpublic void testGuru99TakeScreenShot () viskab erandi {WebDriveri draiver;System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");draiver = uus FirefoxDriver ();// goto urldriver.get ("http://demo.guru99.com/V4/");// Helista ekraanipildi funktsioonilethis. takeSnapShot (draiver, "c: //test.png.webp");}/ *** See funktsioon teeb ekraanipildi* @param veebidraiver* @param failWithPath* @throws Erand* /avalik staatiline void takeSnapShot (WebDriveri veebidraiver, String fileWithPath) viskab erandi {// Teisendage veebidraiveri objekt TakeScreenshotiksTakesScreenshot scrShot = ((TakesScreenshot) veebidraiver);// Helistage getScreenshotAs meetodiks pildifaili loomiseksFail SrcFile = scrShot.getScreenshotAs (OutputType.FILE);// Teisalda pildifail uude sihtkohtaFail DestFile = uus fail (fileWithPath);// Kopeeri fail sihtkohasFileUtils.copyFile (SrcFile, DestFile);}}
MÄRKUS. Seleeni versioon 3.9.0 ja uuemad versioonid ei paku Apache Commons IO JAR-i. Saate need lihtsalt siit alla laadida ja oma projektis helistada
Mis on Ashoti API?
Ashot on Yandexi poolt pakutav kolmanda osapoole utiliit, mida toetab Selenium WebDriver ekraanipiltide jäädvustamiseks. See võtab nii üksiku WebElementi ekraanipildi kui ka lehe kogu lehe ekraanipildi, mis on olulisem kui ekraani suurus.
Kuidas Ashot API-d alla laadida ja konfigureerida?
Ashot API konfigureerimiseks on kaks meetodit
- 1. Maveni kasutamine
- 2. Käsitsi ilma tööriista kasutamata
Konfigureerimine Maveni kaudu:
- Minge aadressile https://mvnrepository.com/artifact/ru.yandex.qatools.ashot/ashot
- Praegu klõpsake uusimat versiooni. Kell on 1.5.4
- Kopeerige sõltuvuse kood ja lisage faili pom.xml
- Salvestage fail ja Maven lisab purgi teie koostamise teele
- Ja nüüd olete valmis !!!
Käsitsi konfigureerimiseks ilma sõltuvustööriistata
- Minge aadressile https://mvnrepository.com/artifact/ru.yandex.qatools.ashot/ashot
- Praegu klõpsake uusimat versiooni. Kell on 1.5.4
- Klõpsake purgil, laadige see alla ja salvestage oma arvutisse
- Lisage jar-fail oma ehitamise teele:
- Eclipse'is paremklõpsake projekti -> minge omadustele -> Ehituse tee -> Raamatukogud -> Lisa välised purgid
- Valige jar-fail
- Rakenda ja sulge
Jäädvustage kogu lehe ekraanipilt AShot API abil
Samm 1) Looge objekt Ashot ja helistage meetod takeScreenshot (), kui soovite lihtsalt ekraanisuuruse lehe ekraanipilti.
Ekraanipildi ekraanipilt = new Ashot (). TakeScreenshot (draiver);
Kui soovite, et ekraanipilt oleks lehe suurusest suurem kui ekraanisuurus, helistage poliitika seadistamiseks meetodile shootStrategy (), enne kui helistate meetodile takeScreenshot (). Seejärel kutsuge veebidraiverist möödumiseks meetod takeScreenshot (), näiteks
Ekraanipildi ekraanipilt = new AShot (). ShootingStrategy (ShootingStrategies.viewportPasting (1000)). TakeScreenshot (draiver);
Siin keritakse 1000 aeg millisekundites, nii et ekraanipildi tegemiseks kerib programm iga 1000 ms järel.
Samm 2): Nüüd hankige pilt ekraanipildilt ja kirjutage see faili. Võite anda failitüübi jpg.webp, png jne.
ImageIO.write (screenshot.getImage (), "jpg.webp", uus File (". \\ ekraanipilt \\ fullimage.jpg.webp");
Kogu lehe ekraanipildi tegemine ekraanisuurusest suuremast lehest.
Näide: Siin on näide saidi http://demo.guru99.com/test/guru99home/ täislehelise ekraanipildi hõivamisest ja faili "screenshot.jpg.webp" salvestamisest.
Ashot API ShootingStrategy klassi kasutamise tõttu suudame jäädvustada kogu pildi ekraanisuurusest suuremast lehest. Siin on programm:
pakk Guru99;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import org.openqa.selenium.By;import org.openqa.selenium.WebElement;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import ru.yandex.qatools.ashot.AShot;import ru.yandex.qatools.ashot.Screenshot;import ru.yandex.qatools.ashot.shooting.ShootingStrategies;avaliku klassi TestScreenshotUsingAshot {avalik staatiline void main (String [] args) viskab IOException {System.setProperty ("veebidraiver.chrome.driver", "c: \\ chromedriver.exe");WebDriveri draiver = uus ChromeDriver ();driver.get ("http://demo.guru99.com/test/guru99home/");draiver.halda (). aken (). maksimeeri ();Ekraanipilt = uus AShot (). ShootingStrategy (ShootingStrategies.viewportPasting (1000)). TakeScreenshot (draiver);ImageIO.write (screenshot.getImage (), "jpg.webp", uus fail ("c: \\ ElementScreenshot.jpg.webp");}}
Lehe konkreetse elemendi ekraanipildi tegemine
Näide: Siin on näide Guru 99 logo elemendipildi jäädvustamisest lehel http://demo.guru99.com/test/guru99home/ ja salvestamine faili "ElementScreenshot.jpg.webp". Siin on kood:
pakk Guru99;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import org.openqa.selenium.By;import org.openqa.selenium.WebElement;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import ru.yandex.qatools.ashot.AShot;import ru.yandex.qatools.ashot.Screenshot;import ru.yandex.qatools.ashot.shooting.ShootingStrategies;avaliku klassi TestElementScreenshotUsingAshot {avalik staatiline void main (String [] args) viskab IOException {System.setProperty ("veebidraiver.chrome.driver", "c: \\ chromedriver.exe");WebDriveri draiver = uus ChromeDriver ();driver.get ("http://demo.guru99.com/test/guru99home/");draiver.halda (). aken (). maksimeeri ();// Leidke ekraanipildi tegemiseks elementWebElementi element = driver.findElement (By.xpath ("// * [@ id = \" saidi nimi \ "] / a [1] / img"));// Koos draiveri passi elemendiga ka meetodis takeScreenshot ().Screenshot = uus AShot (). ShootingStrategy (ShootingStrategies.viewportPasting (1000)). TakeScreenshot (draiver, element);ImageIO.write (screenshot.getImage (), "jpg.webp", uus fail ("c: \\ ElementScreenshot.jpg.webp");}}
Piltide võrdlus AShoti abil
pakk Guru99;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;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 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;avalik klass TestImageComaprison {avalik staatiline void main (String [] args) viskab IOException {System.setProperty ("veebidraiver.chrome.driver", "C: \\ chromedriver.exe");WebDriveri draiver = uus ChromeDriver ();driver.get ("http://demo.guru99.com/test/guru99home/");// Leidke element ja tehke ekraanipiltWebElement logoElement = driver.findElement (By.xpath ("// * [@ id = \" saidi nimi \ "] / a [1] / img"));Screenshot logoElementScreenshot = new AShot (). TakeScreenshot (draiver, logoElemnent);// loe pilti, et seda võrreldaBufferedImage expectedImage = ImageIO.read (uus fail ("C: \\ Guru99logo.png.webp"));BufferedImage actualImage = logoElementScreenshot.getImage ();// Objekti ImageDiffer loomine ja kõnemeetod makeDiff ()ImageDiffer imgDiff = uus ImageDiffer ();ImageDiff diff = imgDiff.makeDiff (tegelik pilt, eeldatav pilt);kui (dif.hasDiff () == tõene) {System.out.println ("Pildid on samad");} veel {System.out.println ("Pildid on erinevad");}juht.ulge ();}}
Kokkuvõte
- Ashot API on Yandexi vabavara.
- See on seleenis ekraanipildi tegemise utiliit.
- See aitab teil teha ekraanipildi individuaalsest WebElementist erinevatel platvormidel nagu töölauabrauserid, iOS Simulator Mobile Safari, Android Emulator Browser.
- See võib teha ekraani suurusest suurema lehe ekraanipildi.
- See funktsioon on seleeni versioonis 3 eemaldatud, nii et Ashot API on hea võimalus.
- See võib ekraanipilte kaunistada.
- See pakub ekraanipiltide võrdlust.
See sai võimalikuks tänu Shradhdha Dave panusele