how take screenshot selenium
Tento tutoriál vysvetľuje dôležitosť obrazovky Selenium Screenshot a ako používať program Ashot na snímanie obrazovky v aplikácii Selenium pomocou príkladov:
Screenshoty sa v zásade používajú pri analýze chýb. Pomáhajú pochopiť, či aplikácia funguje podľa požiadaviek používateľa alebo nie.
Pre každý testovací prípad môže byť prijatý výstup odlišný, niekedy je prijatý správny výstup, niekedy sa zobrazí chyba, niekedy sa zobrazí chybové hlásenie z dôvodu chýbajúcich alebo nedostatočných vstupných údajov atď. Screenshot pomáha pri sledovaní dôkazov akcií / výstupov prijaté.
=> Skontrolujte VŠETKY návody na selén tu
V tomto tutoriále sa dozvieme, kde sú potrebné snímky obrazovky selénu. Budeme diskutovať o Ashote a o tom, ako môžeme použiť Ashot v seléne (inštalácia a konfigurácia ashot ()), naučiť sa snímať screenshoty v seléne (pre celú webovú stránku, pre jeden prvok na stránke a pre aktuálne otvorené okno, tiež porovnávať 2 obrázky) a potom sa pozrite na niekoľko príkladov, kde sa často snímajú snímky obrazovky.
Čo sa dozviete:
sql rozhovor otázky s odpoveďami pdf
Pochopenie snímok obrazovky selénu
Vyššie uvedený obrázok je príkladom snímky obrazovky nasnímanej pri vykonávaní kódu z webu služby Gmail. Obrázok pomáha potvrdiť, že používateľ sa úspešne prihlásil do e-mailového účtu so správnym používateľským menom a heslom.
Screenshoty sú teda veľmi užitočné na zachytenie akcií / výstupov prijatých po vykonaní akcie, a teda pomáhajú pri potvrdení vykonania akcie bez akýchkoľvek problémov.
Selén dokáže automaticky robiť snímky obrazovky; musíme len pridať kód pre snímku obrazovky v procese vykonávania kódu, kde sú potrebné snímky obrazovky.
Kde sú potrebné selénové snímky obrazovky
Možnosti by boli tieto:
- Ak sa pri hľadaní prvku na webovej stránke nedarí.
- Kde je časový limit pri hľadaní webových prvkov na stránke.
- Keď sa vyskytne chyba alebo problém v systéme / aplikácii.
- Keď sa vyskytne zlyhanie tvrdenia.
Čo je Ashot
Ashot () je nástroj tretej strany, ktorý je podporovaný webovým ovládačom Selenium na zaznamenávanie snímok obrazovky.
Ashot () poskytuje nižšie operácie pri snímaní snímok obrazovky:
- Zachytáva sa celá stránka
- Zachytenie webového prvku
- Porovnávanie obrázkov
Pozrime sa, ako to presne funguje v nasledujúcej časti.
Vlastnosti Ashot:
- Z celej stránky je možné urobiť screenshot.
- Je tiež možné vytvoriť snímku obrazovky webového prvku, ktorý je podporovaný na rôznych platformách, ako je Android Emulator Browser, iOS Simulator Mobile Safari, rôzne prehliadače na pracovnej ploche).
- Poskytuje flexibilné porovnanie snímok obrazovky.
- Zdobí screenshoty.
Ashot môže robiť snímky obrazovky v troch krokoch:
- Zachytáva snímku obrazovky celej stránky.
- Nájdite veľkosť a polohu prvku.
- Orezá pôvodnú snímku obrazovky.
Ako môžeme použiť ashot v seléne
Pri sťahovaní a konfigurácii aplikácie Ashot na vašom počítači zvážte nasledujúce kroky:
- Choďte do odkaz.
- Nájdite najnovšiu verziu súboru jar pre Ashot.
- Stiahnite a uložte súbor jar na konkrétnu cestu do vášho zariadenia.
- Teraz pre pridanie súboru jar do vášho projektu v Eclipse – Prejdite do projektu -> Kliknite pravým tlačidlom myši -> choďte na vlastnosti -> vyberte možnosť Zostaviť cestu -> Knižnice -> pridať externé nádoby
- Prejdite cestu, kde je uložený stiahnutý súbor jar.
- Vyberte súbor jar, kliknite na Použiť a zatvorte.
Ako zachytiť snímky obrazovky v seléne
Selén poskytuje zabudovanú funkcionalitu na snímanie snímok obrazovky. Podľa požiadavky, Robí snímku obrazovky rozhranie sa používa na vytváranie snímok obrazovky pri vykonávaní selénových skriptov. Selenium Webdriver teda pomáha pri snímaní snímok obrazovky počas vykonávania kódu.
V nasledujúcej časti sa dozvieme o rôznych druhoch snímaných snímok obrazovky.
Existujú nasledujúce typy:
Zachytenie snímky obrazovky:
- Aktuálne otvorené okno
- Celá webová stránka
- Iba konkrétny webový prvok
- Porovnanie snímky obrazovky s pôvodným obrázkom
Pochopme podrobne vyššie uvedené body.
# 1) Aktuálne otvorené okno
Pozrime sa na implementáciu kódu na spracovanie snímok obrazovky v seléne pre aktuálne otvorené okno:
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.'); } }
Obrázok nižšie je výstupom implementácie vyššie uvedeného kódu. Tu je otvorený web OrangeHRM a je zachytený screenshot prihlasovacej stránky.
(obrázok zdroj )
Pri vykonávaní kódu teda môžeme snímať snímky obrazovky, kdekoľvek to bolo potrebné. Zachytená snímka obrazovky sa uloží do súboru s príponou .png alebo .jpeg. Musíme určiť cestu, kam je potrebné uložiť obrazový súbor.
# 2) Celá webová stránka
Pozrime sa na nasledujúci implementačný kód na zachytenie snímky obrazovky celej stránky pomocou webového ovládača Ashot in Selenium. Zoberme si preto príklad stránky (Jmeter-user-defined-variables) z - 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!'); } }
Tu je jmeter-užívateľom definované premenné stránka nášho webu: www.softwaretestinghelp.com sa otvorí a potom sme vytvorili celú túto webovú stránku (pomocou ashot () v seléne) vo formáte .png a uložili sme ju na požadovanú cestu. Rovnakým spôsobom môžeme zachytiť snímku obrazovky celej stránky pre ľubovoľnú webovú stránku.
Pri implementácii vyššie uvedeného kódu na snímanie snímky obrazovky celej stránky je teda prijatý výstup taký, ako je znázornené na obrázku nižšie, pre úplnú snímku obrazovky webovej stránky.
# 3) Webový prvok
Pozrime sa na nasledujúci implementačný kód s použitím Ashot in Selenium webdriver na zachytenie snímky obrazovky konkrétneho webového prvku na webovej stránke.
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!'); } }
Takže pri implementácii vyššie uvedeného kódu na snímanie obrazovky konkrétneho prvku (tu karta Údržba), prijatý výstup je znázornený na nasledujúcom obrázku.
Tu vyberieme kartu „Údržba“ ako prvok, pre ktorý sa vyžaduje snímka obrazovky. Uveďte cestu, na ktorú chceme uložiť snímku obrazovky. Rovnakým spôsobom môžeme na akejkoľvek takejto webovej stránke zachytiť snímku obrazovky pre akýkoľvek iný prvok.
# 4) Porovnanie snímky obrazovky s pôvodným obrázkom
Pozrime sa na nasledujúci implementačný kód s použitím servera Ashot in Selenium na zachytenie snímky obrazovky s prvkom loga na webovej stránke a porovnanie s pôvodným logom.
Z tohto dôvodu zvážime príklad 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 } } }
Pri implementácii vyššie uvedeného kódu na porovnanie snímky obrazovky prvku loga (tu logo naukri.com) je teda prijatý výstup taký, ako je znázornené na obrázku nižšie.
Tu vyberieme logo stránky „naukri.com“, snímame jej snímku obrazovky a potom je porovnaná s pôvodným logom. Rozdiel medzi obrázkami sa zistí pomocou zabudovaných funkcií. Ak na 2 obrázkoch loga nie je rozdiel, program vytlačí výstup ako „ Obidva obrázky loga sa zhodovali „Else prints“ Obrázky loga sú rôzne “.
Príklady, keď sa často snímajú snímky obrazovky
# 1) Potvrdenie odhlásenia
Aby sme sa mohli prihlásiť na webovú stránku, musíme zadať správne užívateľské meno a heslo, po ktorom sa prihlásime na webovú stránku. Potom používateľ vykoná požadované možnosti a po dokončení práce sa odhlási.
Ak teda po odhlásení poskytneme kód pre snímku obrazovky, znova sa zobrazí prihlasovacia stránka, ktorá by potvrdila akciu odhlásenia. Ďalšie podrobnosti nájdete na nasledujúcom obrázku:
najlepší špionážny softvér pre mobilné telefóny
# 2) Potvrdenie novovytvoreného záznamu
Pridanie kódu pre snímku obrazovky po vytvorení nového záznamu potvrdzuje úspešné vytvorenie záznamu. Ďalšie podrobnosti nájdete na nasledujúcom obrázku.
V prípade, že záznam nie je vytvorený, kód by ďalej nepokračoval v snímaní snímky obrazovky a to by potvrdilo, že záznam sa nevytvára úspešne.
# 3) Príklad chýbajúceho / nesprávneho výstupu
Tento príklad zahŕňa vytvorenie nového záznamu pre názov pracovnej pozície na webovej stránke OrangeHRM. Tu je pole Názov úlohy označené „*“, čo znamená, že je to povinné pole. Záznam by sa teda nevytvoril, kým nevyplníte povinné polia a potom by sme záznam mohli uložiť iba my. Ďalšie podrobnosti nájdete na nasledujúcom obrázku.
Záver
V tomto článku sme teda videli, kde sú potrebné snímky obrazovky selénu, ako potom môžeme zaobchádzať so snímkami obrazovky v seléne, čo je to Ashot, ako je možné ich stiahnuť, nakonfigurovať a skutočne použiť v seléne. Pochopili sme implementáciu kódu na spracovanie snímky obrazovky a tiež sme videli niekoľko príkladov, kedy sa snímky obrazovky často zachytávajú.
=> Prečítajte si kompletného sprievodcu selénom
Odporúčané čítanie
- 30+ najlepších návodov na selén: Naučte sa selén na skutočných príkladoch
- Sprievodca hľadaním prvkov selénom podľa výučby s príkladmi
- Úvod do softvéru Selenium WebDriver - Výučba selénu č. 8
- Výukový program pre selén ChromeDriver: Testy selenového webdriveru v prehliadači Chrome
- Zaobchádzanie s prvkami iFrames pomocou metódy switchTo () selénu WebDriver
- Ako vytvoriť projekt Gradle so selénom
- Ako zaobchádzať s upozorneniami alebo vyskakovacími oknami v selenovom webovom ovládači - selénský výukový program č. 16
- Ako zaobchádzať s posúvačom v selenovom webdriveri