debugging selenium scripts with logs selenium tutorial 26
Nå beveger vi oss mot slutten av vårt mest omfattende Gratis opplæringsprogrammer for selen testverktøy . Opplæringsprogrammene vi legger ut nå er en del av forhåndsopplæring i Selen.
I forrige opplæring holdt vi fokus på Kontinuerlig integrasjonsverktøy kalt Hudson . Det er et gratis verktøy og har mange flere muligheter for å bygge testprosjektet, utføre testklassene eksternt og sende ut en e-postmelding til interessentene som informerer dem om søknadsstatus med hensyn til beståtte og mislykkede testsaker.
I den nåværende opplæringen vil vi bevege oss mot noen avanserte konsepter som direkte eller indirekte kan hjelpe optimalisering av automatiseringsrammeverket og gir mer synlighet for brukerne.
I den nåværende opplæringen vil vi diskutere loggfunksjon, dens potensial, feilsøkingsfunksjoner og mye mer.
Noen ganger anses logging å være en overhead på den eksisterende mekanismen for å lage skript, men eksperter anser det som en av de beste metodene hvis de brukes i nøyaktig andel på grunn av følgende fordeler:
Fordeler med å logge på selenskript:
- Gir en fullstendig forståelse av utførelse av testsuiter
- Loggmeldinger kan lagres i eksterne filer for etterkontroll
- Logger er en eksepsjonell assistent i feilsøking av programutførelsesproblemer og feil
- Logger kan også gjennomgås for å fastslå applikasjonens helse av interessentene
Hva du vil lære:
Log4j - Et Java-basert loggings-API
Fortsett til de tekniske detaljene om logging, la oss diskutere opprinnelsen til API-en som vi vil bruke gjennom hele log4j opplæring å generere logger. Log4j var et resultat av samarbeid fra folk på Secure Electronic Marketplace for Europe for å utvikle et verktøy som kunne hjelpe oss med å generere logger, og dermed kom log4j i rampelyset i året 1996. Log4j er et open source-verktøy og lisensiert under IBM Public License.
Det er tre hovedkomponenter som utgjør implementeringen av log4j. Disse komponentene representerer detaljene om loggnivået, formatene til loggmeldingen de vil bli gjengitt i og deres lagringsmekanismer.
Bestanddeler av Log4j
- Loggere
- Appenders
- Oppsett
# 1) Loggere
Følgende trinn må gjøres for å implementere loggere i prosjektet.
Trinn 1 : Opprette en forekomst av Logger-klassen
Steg 2 : Definere loggnivå
Logger-klasse - Det er et java-basert verktøy som har implementert alle de generiske metodene slik at vi får mulighet til å bruke log4j.
Logg nivåer - Loggnivåer er populært kjent som utskriftsmetoder. Disse brukes til å skrive ut loggmeldingene. Det er primært fem typer loggnivåer.
- feil()
- varsle()
- info ()
- feilsøke ()
- Logg()
For å kunne generere logger, er alt vi trenger å gjøre å ringe noen av utskriftsmetodene over loggerinstansen. Vi vil se nærmere på det under implementeringsfasen.
# 2) Appenders
Nå som vi vet hvordan vi skal generere disse loggene, er det neste som skal dukke opp i tankene våre at hvor får jeg se loggene? Svaret på dette spørsmålet ligger i definisjonen av 'Appenders'.
Appenders brukes konsekvent til å spesifisere datakilden / mediet der loggene skal genereres. Omfanget av datakilder strekker seg fra forskjellige eksterne medier som konsoll, GUI, tekstfiler etc.
# 3) Oppsett
Noen ganger ønsker brukeren at visse opplysninger forutsettes eller legges til hver loggoppgave. For eksempel ønsker jeg å skrive ut en tidsstempel sammen med loggoppgaven min. Dermed kan slike krav oppnås med 'Layouts'.
Oppsett er et verktøy som lar brukeren velge ønsket format der loggene vil bli gjengitt. Appenders og Layout har en tett kobling mellom seg. Dermed kreves det at vi kartlegger hver av appenderne med et spesifikt oppsett.
Legg merke til at brukeren er utnyttet for å definere flere appenders, hvert kart med et eget oppsett.
Nå som vi er klar over det grunnleggende om log4j og dets komponenter, vil vi bevege fokus mot implementeringsfenomenet.
La oss forstå hele implementeringsprosessen trinn for trinn.
Installasjon / oppsett
For installasjon og oppsett vil vi vurdere “Learning_Selenium” -prosjektet som vi allerede har laget i de tidligere øktene i denne serien.
Trinn 1 : Det første og fremste trinnet er å laste ned den nyeste jar for log4j API. Krukken finner du enkelt på det offisielle distribusjonsnettstedet - “ http://logging.apache.org/log4j/1.2/download.html ”.
Steg 2 : Det neste trinnet er å konfigurere byggestien og gi log4j.jar som et eksternt bibliotek.
Gjennomføring
Logging med log4j kan implementeres og konfigureres på to måter:
- Programmatisk via skript
- Manuelt via konfigurasjonsfiler
Begge de ovennevnte konfigurasjonsmetodene har både fortjeneste og ulemper. For denne opplæringen vil vi vurdere å konfigurere log4j manuelt via konfigurasjonsfiler basert på enkelhet og enkelhet. Konfigurasjonsfilen er enda en XML-fil for å konfigurere gjenstander relatert til log4j.
Oppretting av log4j.xml-fil
Trinn 1 . Opprett en log4j.xml-fil. Kopier og lim inn koden nedenfor i konfigurasjonsfilen.
Gjennomgang av konfigurasjonsfilen
consoleAppender
Konsollappenderen brukes til å skrive ut logguttalelsene på konsollen.
fil appender
Filappenderen brukes til å skrive ut loggoppgavene i en ekstern fil. Brukeren benyttes for å sette en av- og på-verdi for den vedlagte koden som vil fortelle systemet å legge til og logge uttalelser til den tidligere opprettede eller å overskrive de tidligere opprettede loggene og generere de ferske loggene helt.
'append' value= 'false' />
Verdien av filparameteren er satt til et bestemt sted for å varsle systemet om å opprette den forventede loggfilen på nevnte plassering. Vi spesifiserer også loggfilnavnet innenfor verdiparameteren.
Oppsett
Som diskutert i de første delene av denne opplæringen, brukes layoutene til å spesifisere gjengivelsesmekanismen for logguttalelser. Log4j gir forskjellige layoutmønstre. Brukeren benyttes for å spesifisere ønsket mønster i verdien til ConversionPattern-parameteren.
Resultatet av ovennevnte layout skal være omtrent som:
01-07-2014 12:56:32 INFO (GmailLogin): Eksempel på loggmelding
I utgangen ovenfor:
- Første felt - Dato for utførelse
- Andre felt - Nøyaktig tid i tt: mm: ss da testtrinnet ble utført
- Tredje felt - Ett av loggnivået
- Fjerde felt - Testklassens navn
- Det femte feltet - Loggmelding
Steg 2 . Så snart vi er ferdige med opprettelsen av log4j.XML-filen, er neste trinn å sette log4j.XML-filen i prosjektets rotmappe / basekatalog.
Programnivå Implementering
Trinn 3 : Det neste trinnet er å bruke noen av konfiguratorene til å konfigurere og analysere log4j.xml-filen.
Syntaks:
package com.logExample; import org.apache.log4j.xml.DOMConfigurator; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.RunWith; import org.junit.runner.notification.Failure; import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ Demo.class }) public class TestSuite { /** * Setup method to set system property for log file name */ @BeforeClass public static void Setup() { // loading log4j.xml file DOMConfigurator.configure('log4j.xml'); } /** * @param args */ public static void main(String() args) { Result result = JUnitCore.runClasses(TestSuite.class); for (Failure failure : result.getFailures()) { System.out.println('
TEST NAME: ' + failure.getTestHeader()); System.out.println('
ERROR: ' + failure.getMessage() + '
'); System.out.println(failure.getTrace()); System.exit(1); } } }
Merk : Logger kan implementeres på klassenivå også i stedet for Test suite-nivå. Alt du trenger å gjøre er å gjøre de nødvendige endringene i testklassen i stedet for i testpakken.
Trinn 4 : Det aller neste trinnet er å lage en testklasse “GmailLogin.java” under prosjektet. Implementere Gmail-påloggingsfunksjonaliteten i klassen.
Trinn 5 : Det neste trinnet er å importere loggerklassen for å kunne implementere logguttalelsene.
Syntaks:
importer org.apache.log4j.Logger;
Trinn 6 : Det neste trinnet i prosessen er å instantiere objektet til Logger-klassen.
Syntaks:
// Objektinitialisering for logg
statisk Tømmerstokker Logg Logger.getLogger (Demo. klasse .getName ());
Trinn 7 : Den ovennevnte loggvariabelen av typen Logger vil bli brukt over hele testklassen for å generere logguttalelsene. Henvis til følgende kode for det samme.
Syntaks:
@Test public void testGmailLogin() throws Exception{ // enter a valid email address driver.findElement(By.id('Email')).sendKeys('TestSelenium1607@gmail.com'); log.info('Entered a valid Email Address.'); // enter a invalid password driver.findElement(By.id('Passwd')).sendKeys('InvalidPassword'); log.info('Entered a invalid Password.'); // click on sign in button driver.findElement(By.id('signIn')).click(); log.info('Clicked on the Sign In Button.'); try{ //Verify the home page assertTrue('Verification Failed: User successfully landed on the Home Page.', driver.getTitle().equals('Gmail')); log.info('Verified that the user landed on the Home Page.'); } catch (Exception e) { log.error('Unsuccessfull Login.'); } }
Resultat i loggfilen
01-07-2014 12:56:11 INFO (GmailLogin): Lastet opp filen til System: FileExample.txt
01-07-2014 12:56:11 INFO (GmailLogin): Send inn endringene
01-07-2014 12:56:15 FEIL (GmailLogin): Mislykket pålogging.
OPPDATERING mars 2020
Tømmerstokker
En logg er en melding som vi registrerer eller genererer for hver transaksjon vi gjør. Vi kan analysere loggene for å sjekke hva som gikk riktig eller galt. Anta at hvis noe system lukkes brått, kan vi komme inn i årsaken til feilen ved å analysere loggene.
Dermed genereres logger i hver utviklingssyklus. På samme måte kan vi også generere logger i Selen-koden vår for testing før og etter hver testtilstand eller testerklæring, for å sjekke om alle fungerer som forventet.
log4j Framework
For å generere disse loggfilene i Selenium-kode bruker vi log4j framework levert av Apache. Med dette rammeverket kan vi generere våre tilpassede logger.
Klikk her for å laste ned log4j jar fra Maven-depotet.
Vi kan generere logger på to måter:
- Bruker log4j.properties-filen
- Bruker log4j.xml-filen
Disse filene inneholder konfigurasjonen for hva slags logger du vil generere. Du kan bruke hvilken som helst av dem. Hvis du ønsker å bruke begge deler, får log4j.xml høyere prioritet. Den foretrukne måten å generere logger på er å bruke egenskapsfilen, så her vil vi utforske mer om å generere bare gjennom egenskapsfilen.
Implementering av log4j
Last ned log4j jar-filen fra banen ovenfor, og legg den til i prosjektbygningsstien. Lag log4j.properties-filen og legg til egenskapsfilen parallelt med kildemappen din når du bruker frittstående java-program.
Log4j.properties-filen er en konfigurasjonsfil som lagrer verdier i nøkkelverdiparet.
Den inneholder 3 hovedkomponenter:
- Loggere: Fanger logginformasjon.
- Appenders : Publiser logginformasjon til et annet foretrukket mål som konsoller, filer, stikkontakter, NT-hendelseslogger osv.
- Oppsett : Formater logginformasjon i forskjellige stiler som HTML, XML Layout, etc.
Syntaks av filen log4j.properties
#1) Definer rotloggeren med loggingsnivået INFO og appender X (appender kan være alle konsoller, filer, sockets, NT hendelseslogger).
log4j.rootLogger = INFO, X
#to) Sett appender som heter X til å være File Appender.
log4j.appender.X = org.apache.log4j.FileAppender
# 3) Definer oppsettet for X appender.
log4j.appender.X.layout = org.apache.log4j.PatternLayout log4j.appender.X.layout.conversionPattern = %m%n
log4j.properties Eksempel
Opprett en log4j.properties-fil, med henvisning til syntaksen ovenfor:
# initialiser rotlogger med nivå INFO og skriv den ut i konsollen ved hjelp av stdout og fout.
log4j.rootLogger=INFO,stdout,fout
# legg til en ConsoleAppender i loggerstdout for å skrive til konsollen.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# bruk et enkelt oppsettmønster for meldingsformat som er definert er% m% n, som skriver ut loggmeldinger i en ny linje.
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%m%n
# legg til en FileAppender til loggerfout.
log4j.appender.fout=org.apache.log4j.FileAppender
# Appender FILE er definert som org.apache.log4j.FileAppender. Den skriver til en fil som heter SoftwareTestingHelp.
log4j.appender.fout.File=SoftwareTestingHelp.log
# bruk et mer detaljert meldingsmønster.
log4j.appender.fout.layout=org.apache.log4j.PatternLayout log4j.appender.fout.layout.ConversionPattern=%p %d{ISO8601} %r %c (%t) %m%n
Ulike nivåer av logging
- DEBUG
- INFO
- VARSLE
- FEIL
- FATAL
Hvert nivå har sin egen prioritet. Anta at hvis vi bruker 'DEBUG' -nivå, vil det logge alle nivåmeldinger som INFO >> ADVARSEL >> FEIL >> FATAL.
åpen kildekode resten api testing verktøy
Anta at hvis vi bruker “FEIL” -nivå, så vil det ignorere DEBUG >> INFO >> ADVARSEL og det vil bare logge FEIL >> FATAL.
I alle disse nivåene må vi definere i eiendomsfilen vår. Loggene genereres, avhengig av vår konfigurasjon.
Implementering av loggene for det samme eksemplet som er beskrevet ovenfor:
Trinn 1: Opprett et objekt for Logger-klassen.
final static Logger logger = Logger.getLogger(Frame.class);
Ovennevnte metode hjelper deg med å få loggerobjektet. Denne metoden tar enten klasse eller navnet på klassen som argument. Ved hjelp av dette loggerobjektet kan du generere tilpassede logger.
I dette eksemplet refererte vi til apache log4j-rammeverket, hvis du bruker TestNG-rammeverk, må du bruke TestNG-loggklassen.
Her har vi prøvd å generere loggen, uten å implementere egenskapsfilen.
Ingen logger genereres verken i konsollen eller loggfiler som er opprettet. Det mottas en feil i konsollen ettersom loggfilen ikke er implementert riktig. For å implementere det, må vi bruke - PropertyConfigurator-klassen. Følg trinn 2.
Steg 2: Initialiser Property Configurator-filen og send argumentet som navnet på log4j-egenskapsfilen.
PropertyConfigurator.configure (“log4j.properties”);
Komplett kode for generering av loggfiler:
package com.wordpress.pages; import java.util.List; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.junit.Assert; import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class Frame { static WebDriver driver; final static Logger logger = Logger.getLogger(Frame.class); @Test public void Test(){ PropertyConfigurator.configure('log4j.properties.txt'); System.setProperty('webdriver.chrome.driver', 'D:\New folder\exe\chromedriver.exe'); logger.debug('Debug this path for chrome path issue'); driver = new ChromeDriver(); logger.info('Chrome driver is up and running'); driver.get('http://www.dwuser.com/education/content/the-magical-iframe-tag-an-introduction/'); logger.warn('Url is not loaded properly'); //identifying the frame using locator or say using webelement driver.switchTo().frame(driver.findElement(By.xpath('//div(@id='eduFooterWrap')//iframe(1)'))); logger.error('Frame is not available'); driver.findElement(By.xpath('//input(@name='name')')).sendKeys('SoftwareTestingHelp.com'); logger.fatal('Message not entered'); } }
Egenskapsfil:
Konklusjon
I den aktuelle opplæringen fokuserte vi på teknisk implikasjon mens du implementerer logging i et rammeverk. Vi utnyttet log4j-verktøyet for å implementere logging. Vi diskuterte de grunnleggende komponentene som utgjør log4j fra et brukervennlighetsperspektiv. Med Appenders og layouts blir brukeren utnyttet til å velge ønsket loggformat / mønster og datakilde / sted.
I denne opplæringen undersøker vi hvorfor logger brukes i vårt test- og dekkede log4j-rammeverk, og implementering av log4j-rammeverket i Selen for å generere logger.
Neste opplæring # 27 : I den kommende opplæringen vil vi diskutere noen mer avanserte emner relatert til effektiv skripting og å feilsøke scenarier der brukeren er pålagt å håndtere mus- og tastaturhendelser. Videre vil vi også diskutere hvordan du lagrer mer enn ett webelement i en liste.
Anbefalt lesing
- In-Depth Eclipse Tutorials For Beginners
- Introduksjon til Selen WebDriver - Selenium Tutorial # 8
- Effektiv Selen Scripting og feilsøking av scenarier - Selenium Tutorial # 27
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- 30+ beste selenopplæringsprogrammer: Lær selen med virkelige eksempler
- Hvordan finne elementer i Chrome- og IE-nettlesere for å bygge selen-skript - Selen-veiledning nr. 7
- Implementering av vårt første WebDriver Script - Selenium WebDriver Tutorial # 10
- WebDriver Hele installasjonen og installasjonen med Eclipse - Selenium Tutorial # 9