how take screenshot selenium
Acest tutorial explică importanța Selenium Screenshot și cum să utilizați Ashot pentru a face Screenshot în aplicația Selenium cu exemple:
Capturile de ecran sunt utilizate în principiu în analiza erorilor. Acestea vă ajută să înțelegeți dacă aplicația funcționează conform cerințelor utilizatorului sau nu.
Pentru fiecare caz de test, ieșirea primită poate fi diferită, uneori se primește ieșirea corectă, uneori primim o eroare, alteori mesajul de eroare este primit din cauza datelor de intrare lipsă sau insuficiente, etc. Captura de ecran ajută la urmărirea dovezilor acțiunilor / ieșirilor primit.
=> Verificați TOATE Tutorialele Selenium aici
În acest tutorial, vom afla unde sunt necesare capturi de ecran cu Selenium. Vom discuta despre Ashot și cum putem folosi Ashot în Selenium (instalarea și configurarea ashot ()), învățăm să capturăm capturi de ecran în Selenium (pentru întreaga pagină web, pentru un singur element de pe pagină și pentru o fereastră deschisă în prezent, comparând, de asemenea, 2 imagini) și apoi priviți câteva exemple în care capturile de ecran sunt adesea capturate.
Ce veți învăța:
Înțelegerea capturilor de ecran cu Selenium
Imaginea de mai sus este un exemplu de captură de ecran capturată în timpul executării codului de pe site-ul Gmail. Imaginea vă ajută să confirmați că utilizatorul s-a conectat cu succes la contul de e-mail cu numele de utilizator și parola corecte.
Astfel, capturile de ecran sunt foarte utile în capturarea acțiunilor / ieșirii primite după efectuarea unei acțiuni și, prin urmare, ajută la confirmarea unei acțiuni efectuate fără nicio problemă.
Seleniul poate face automat capturi de ecran; trebuie doar să adăugăm cod pentru captură de ecran în procesul de executare a codului în care sunt necesare capturi de ecran.
Unde sunt necesare capturi de ecran cu seleniu
Următoarele ar fi posibilitățile:
- Când există probleme la găsirea unui element pe o pagină web.
- Unde există un Timeout în găsirea elementelor web pe o pagină.
- Când apare o eroare sau o problemă în sistem / aplicație.
- Când se întâlnește un eșec de afirmare.
Ce este Ashot
Ashot () este un utilitar terță parte care este acceptat de driverul web Selenium pentru a captura capturile de ecran.
Ashot () oferă mai jos operații în capturarea capturilor de ecran:
- Capturarea întregii pagini
- Captarea elementului web
- Compararea imaginilor
Să vedem cum funcționează exact acest lucru în secțiunea următoare.
Caracteristicile Ashot:
- Este posibil să faceți o captură de ecran a întregii pagini.
- Este posibil să faceți și o captură de ecran a unui element web, care este acceptat pe diverse platforme, cum ar fi Android Emulator Browser, iOS Simulator Mobile Safari, diferitele browsere desktop).
- Oferă o comparație flexibilă a capturilor de ecran.
- Decorează capturile de ecran.
Ashot poate face capturi de ecran în trei pași:
- Captează o captură de ecran a paginii complete.
- Găsiți dimensiunea și poziția elementului.
- Decupează captura de ecran originală.
Cum putem folosi Ashot în seleniu
Luați în considerare următorii pași pentru descărcarea și configurarea Ashot pe computer:
- Du-te la legătură.
- Găsiți cea mai recentă versiune a fișierului jar prezent pentru Ashot.
- Descărcați și salvați fișierul jar la o anumită cale de pe computer.
- Acum pentru adăugarea fișierului jar la proiectul dvs. în Eclipse – Mergeți la proiectul dvs. -> Faceți clic dreapta -> accesați proprietăți -> selectați Construiți calea -> Biblioteci -> adăugați borcane externe
- Răsfoiți calea în care este salvat fișierul jar descărcat.
- Selectați fișierul jar, faceți clic pe Aplicare și închideți.
Cum să capturați capturi de ecran în seleniu
Selenium oferă funcționalitate încorporată pentru capturarea capturilor de ecran. Conform cerinței, Captură de ecran interfața este utilizată pentru a face capturi de ecran, în timp ce executați scripturile Selenium. Astfel, Selenium Webdriver ajută la capturarea capturilor de ecran în timpul executării codului.
În secțiunea de mai jos, vom afla despre diferitele tipuri de capturi de ecran capturate.
Următoarele sunt tipurile:
Capturarea unei capturi de ecran a:
- Fereastra curentă deschisă
- Întreaga pagină web
- Doar un element web specific
- Compararea imaginii capturilor de ecran cu imaginea originală
Să înțelegem în detaliu punctele de mai sus.
care din următoarele nu se află în starea de testare a sistemului?
# 1) Fereastra curentă deschisă
Să ne uităm la implementarea codului pentru gestionarea capturilor de ecran în Selenium pentru fereastra deschisă în prezent:
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.'); } }
Imaginea de mai jos este rezultatul implementării codului de mai sus. Aici, site-ul OrangeHRM este deschis și captura de ecran a paginii de conectare.
(imagine sursă )
Astfel, putem realiza capturi de ecran ori de câte ori este necesar în timpul executării codului. Captura de ecran capturată este salvată într-un fișier cu extensia .png sau .jpeg. Trebuie să oferim calea unde trebuie salvat fișierul imagine.
# 2) Întreaga pagină web
Să ne uităm la codul de implementare de mai jos pentru a captura o captură de ecran a paginii complete, cu ajutorul Ashot în Selenium webdriver. Pentru aceasta, să luăm în considerare exemplul unei pagini (Jmeter-user-defined-variables) din - 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!'); } }
Aici jmeter-user-defined-variables pagina site-ului nostru web: www.softwaretestinghelp.com este deschis și apoi am făcut o captură de ecran a acestei pagini web complete (cu ajutorul ashot () în seleniu) în format .png și salvată pe calea dorită. În același mod în care putem captura o captură de ecran a întregii pagini pentru orice pagină web.
Astfel, la implementarea codului de mai sus pentru capturarea capturii de ecran a întregii pagini, rezultatul primit este așa cum se arată în imaginea de mai jos pentru o captură de ecran completă a paginii web.
# 3) Un element web
Să ne uităm la codul de implementare de mai jos, cu utilizarea Ashot în Selenium webdriver pentru capturarea capturii de ecran a unui anumit element web de pe pagina web.
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!'); } }
Astfel, la implementarea codului de mai sus pentru capturarea unei capturi de ecran a unui anumit element (aici fila Întreținere), ieșirea primită este așa cum se arată în imaginea de mai jos.
Aici, alegem fila „Întreținere” ca element pentru care este necesară o captură de ecran. Menționați calea în care dorim să fie salvată captura de ecran. În același mod, putem captura o captură de ecran pentru orice alt element și pe orice astfel de site web.
# 4) Compararea capturilor de ecran cu imaginea originală
Să aruncăm o privire la codul de implementare de mai jos cu ajutorul Ashot în Selenium webdriver pentru a captura o captură de ecran a unui element de logo pe pagina web și a-l compara cu logo-ul original.
Pentru aceasta să luăm în considerare exemplul 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 } } }
Astfel, la implementarea codului de mai sus pentru compararea capturii de ecran a unui element logo (aici sigla naukri.com), ieșirea primită este așa cum se arată în imaginea de mai jos.
Aici, alegem sigla „naukri.com”, capturăm captura de ecran și apoi este comparată cu sigla originală. Diferența dintre imagini se găsește folosind funcții încorporate. Dacă nu se găsește nicio diferență în cele 2 imagini logo, programul tipărește rezultatul ca „ Ambele imagini ale logo-ului s-au potrivit „Else print” Imaginile logo-ului sunt diferite ”.
Exemple în care capturile de ecran sunt adesea capturate
# 1) Confirmare deconectare
Pentru a ne conecta la un site web, trebuie să introducem numele de utilizator și parola corecte după care ne autentificăm pe site. Apoi utilizatorul efectuează opțiunile necesare și, odată ce a terminat lucrarea, utilizatorul este deconectat.
Deci, dacă oferim un cod pentru captură de ecran după ce v-ați deconectat, va apărea din nou pagina de conectare care va confirma acțiunea de deconectare. Vă rugăm să consultați imaginea de mai jos pentru mai multe detalii:
tcp ip întrebări și răspunsuri la interviu pdf
# 2) Confirmarea unei înregistrări nou create
Adăugarea codului pentru captură de ecran după crearea unei înregistrări noi confirmă înregistrarea creată cu succes. Vă rugăm să consultați captura de ecran de mai jos pentru mai multe detalii.
În cazul în care înregistrarea nu este creată, codul nu va continua să captureze captura de ecran și acest lucru ar confirma că înregistrarea nu este creată cu succes.
# 3) Exemplu de ieșire lipsă / incorectă
Acest exemplu include crearea unei noi înregistrări pentru titlul postului pe site-ul OrangeHRM. Aici, câmpul Titlul postului este marcat cu „*” ceea ce înseamnă că este un câmp obligatoriu. Deci, înregistrarea nu va fi creată până când nu se completează câmpurile obligatorii și atunci doar noi vom putea salva înregistrarea. Vă rugăm să consultați captura de ecran de mai jos pentru mai multe detalii.
Concluzie
Astfel, în acest articol am văzut, unde sunt necesare capturi de ecran cu Selenium, apoi cum putem gestiona capturile de ecran în Selenium, ce este Ashot, cum poate fi descărcat, configurat și utilizat de fapt în Selenium. Am înțeles implementarea codului pentru gestionarea capturilor de ecran și am văzut și câteva exemple în care capturile de ecran sunt adesea capturate.
=> Citiți Ghidul complet de seleniu
Lectură recomandată
- 30+ Cele mai bune tutoriale despre seleniu: învățați seleniul cu exemple reale
- Tutorial Selenium Find Element By Text cu exemple
- Introducere în Selenium WebDriver - Tutorial Selenium # 8
- Tutorial ChromeDriver Selenium: Teste Selenium Webdriver pe Chrome
- Gestionarea iFramelor folosind metoda Selenium WebDriver switchTo ()
- Cum să creați un proiect Gradle cu seleniu
- Cum să gestionați alertele / ferestrele pop-up în Selenium WebDriver - Selenium Tutorial # 16
- Cum să gestionați bara de derulare în Selenium Webdriver