how take screenshot selenium
Овај водич објашњава важност снимка екрана Селениум и како се користи Асхот за снимање екрана у апликацији Селениум са примерима:
Снимке екрана се у основи користе у анализи грешака. Они помажу у разумевању да ли апликација ради према захтевима корисника или не.
За сваки тест случај, примљени излаз може бити другачији, понекад се прими тачан излаз, понекад добијемо грешку, понекад се добије порука о грешци због недостајућих или недовољних улазних података итд. Снимак екрана помаже у праћењу доказа о радњама / излазима примљен.
=> Овде погледајте СВЕ туторијале о селену
Питања и одговори за интервју за мобилно тестирање
У овом упутству ћемо научити где су потребне снимке екрана Селениум. Разговараћемо о Асхоту и како можемо да користимо Асхот у Селенију (инсталација и конфигурација асхот ()), научимо да снимамо снимке екрана у Селениум (за целу веб страницу, за један елемент на страници и за тренутно отворен прозор, такође упоређујући 2 слике), а затим погледајте неколико примера где се често снимају снимци екрана.
Шта ћете научити:
Разумевање снимака екрана селена
Горња слика је пример снимка екрана снимљеног током извршавања кода са Гмаил веб локације. Слика помаже у потврђивању да се корисник успешно пријавио на налог е-поште помоћу тачног корисничког имена и лозинке.
Стога су снимци екрана врло корисни у хватању радњи / резултата примљених након извршене радње, а тиме помажу у потврђивању извршене радње без икаквог проблема.
Селен може аутоматски да прави снимке екрана; морамо само додати код за снимак екрана у процесу било ког извршавања кода где су потребне снимке екрана.
Где су потребне слике заслона селена
Следе могућности:
- Када има проблема са проналажењем елемента на веб страници.
- Где постоји временско ограничење у проналажењу веб елемената на страници.
- Када се у систему / апликацији догоди грешка или проблем.
- Када се наиђе на неуспех тврдње.
Шта је Асхот
Асхот () је услужни програм треће стране који подржава мрежни управљачки програм Селениум за снимање снимака екрана.
Асхот () пружа следеће операције при снимању снимака екрана:
- Снимање целе странице
- Хватање веб елемента
- Упоређивање слика
Да видимо како тачно ово функционише у следећем одељку.
Карактеристике Асхота:
- Могуће је направити снимак екрана целе странице.
- Могуће је направити и снимак екрана веб-елемента, који је подржан на разним платформама као што су Андроид Емулатор Бровсер, иОС Симулатор Мобиле Сафари, различити прегледачи за радну површину).
- Пружа флексибилно поређење екрана.
- Украшава снимке екрана.
Асхот може да направи снимке екрана у три корака:
- Снима снимак екрана целе странице.
- Пронађите величину и положај елемента.
- Исеците оригинални снимак екрана.
Како можемо користити ашот у селену
Размотрите следеће кораке за преузимање и конфигурисање Асхота на вашем рачунару:
- Иди на линк.
- Пронађите најновију верзију јар датотеке присутне за Асхот.
- Преузмите и сачувајте јар датотеку на одређеној путањи на вашем рачунару.
- Сада за додавање јар датотеке у свој пројекат у програму Ецлипсе - идите на свој пројекат -> десни клик -> идите на својства -> изаберите ставку Буилд Патх -> Либрариес -> додајте спољне тегле
- Прегледајте путању на којој се чува преузета јар датотека.
- Изаберите датотеку јар, кликните на Аппли и затворите.
Како снимити снимке екрана у селену
Селениум пружа уграђену функционалност за снимање снимака екрана. Према захтеву, ТакесСцреенсхот интерфејс се користи за прављење снимака екрана, док се извршавају Селениум скрипте. Дакле, Селениум Вебдривер помаже у снимању снимака екрана док се извршава код.
У одељку у наставку сазнаћемо о различитим врстама екрана које су снимљене.
Следе врсте:
Снимање снимка екрана:
- Тренутно отворен прозор
- Цела веб страница
- Само одређени веб елемент
- Поређење слике екрана са оригиналном сликом
Хајде да детаљно разумемо горње тачке.
# 1) Тренутни отворени прозор
Погледајмо имплементацију кода за руковање снимцима екрана у Селенију за тренутно отворен прозор:
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.'); } }
Слика испод је резултат горње имплементације кода. Овде је отворена локација ОрангеХРМ и снимљен је снимак екрана странице за пријаву.
(слика извор )
Тако можемо извршити снимке екрана тамо где је икад било потребно током извршавања кода. Снимљени снимак екрана чува се у датотеци са .пнг или .јпег екстензијом. Морамо да наведемо путању на којој треба сачувати датотеку слике.
# 2) Цела веб страница
Погледајмо доњи имплементациони код за снимање снимка екрана целе странице, уз помоћ Асхота у Селениум вебдривер-у. За ово, размотримо пример странице (Јметер-кориснички дефинисане променљиве) из - софтваретестингхелп.цом .
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!'); } }
Ево, јметер-кориснички дефинисане променљиве страница наше веб странице: ввв.софтваретестингхелп.цом се отвори, а затим смо направили снимак екрана ове комплетне веб странице (уз помоћ асхот () у селенијуму) у .пнг формату и сачували на жељеној путањи. На исти начин на који можемо снимити снимак екрана целе странице за било коју веб страницу.
Дакле, приликом примене горњег кода за снимање снимка екрана целе странице, добијени излаз је као што је приказано на слици испод за цео снимак екрана веб странице.
# 3) Веб елемент
Погледајмо доњи имплементациони код, уз употребу Асхота у Селениум вебдривер-у за снимање снимка екрана одређеног веб-елемента на веб-страници.
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!'); } }
Стога на примени горњег кода за снимање снимка екрана одређеног елемента (овде картица Одржавање), примљени излаз је приказан на доњој слици.
Овде одабиремо картицу „Одржавање“ као елемент за који је потребан снимак екрана. Помените путању на којој желимо да се снимак екрана сачува. На исти начин на који можемо снимити снимак екрана за било који други елемент, као и на било којој таквој веб локацији.
# 4) Поређење снимка екрана са оригиналном сликом
Погледајмо доњи имплементациони код уз употребу Асхота у Селениум вебдривер-у за снимање снимка екрана елемента логотипа на веб страници и упоређивање са оригиналним логотипом.
За ово размотримо пример наукри.цом :
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 } } }
Дакле, приликом примене горњег кода за упоређивање снимка екрана елемента логотипа (овде логотип наукри.цом), добијени излаз је као што је приказано на доњој слици.
Овде бирамо логотип „наукри.цом“, снимамо снимак екрана, а затим се упоређује са оригиналним логотипом. Разлика између слика се проналази помоћу уграђених функција. Ако се на 2 слике логотипа не пронађе разлика, програм ће штампати излаз као „ Обе слике логотипа се подударају „Остало штампа“ Слике логотипа су различите ”.
Примери где се често снимају снимци екрана
# 1) Потврда одјаве
Да бисмо се пријавили на веб локацију, морамо да унесемо тачно корисничко име и лозинку након чега се пријављујемо на веб локацију. Тада корисник изводи потребне опције и након завршетка посла корисник се одјави.
Дакле, ако пружимо код за снимак екрана након одјаве, поново ће се видети страница за пријаву која ће потврдити акцију одјаве. Молимо погледајте доњу слику за више детаља:
питања и одговори на интервју за испитивање етл за искусни пдф
# 2) Потврда новоствореног записа
Додавање кода за снимак екрана након креирања новог записа потврђује да је запис успешно направљен. За више детаља погледајте доњи снимак екрана.
У случају да запис није креиран, код не би наставио са снимањем снимка екрана и то би потврдило да запис није успешно креиран.
# 3) Пример недостајућег / нетачног излаза
Овај пример укључује стварање новог записа о називу посла на веб локацији ОрангеХРМ. Овде је поље Назив посла означено са „*“, што значи да је обавезно поље. Дакле, запис се неће креирати док се не попуне обавезна поља и тада ћемо само ми моћи да га сачувамо. За више детаља погледајте доњи снимак екрана.
Закључак
Стога смо у овом чланку видели где су потребне селенске снимке екрана, затим како можемо да радимо са сликама екрана у Селенијуму, шта је Асхот, како се може преузети, конфигурисати и заправо користити у селенијуму. Разумели смо примену кода за руковање снимком екрана и такође смо видели неколико примера где се често снимају снимци екрана.
=> Прочитајте комплетан водич за селен
Препоручено читање
- 30+ најбољих водича за селен: научите селен на стварним примерима
- Водич за текст помоћу примера у тексту за проналажење селена
- Увод у Селениум ВебДривер - Водич за селен бр. 8
- Водич за ЦхромеДривер Селениум: Тестови Селениум Вебдривер-а на Цхроме-у
- Руковање иФрамовима помоћу методе Селениум ВебДривер свитцхТо ()
- Како створити пројекат Градле са селеном
- Како се рукује упозорењима / искачућим прозорима у програму Селениум ВебДривер - Водич за селен # 16
- Како се рукује клизачем у програму Селениум Вебдривер