debugging selenium scripts with logs selenium tutorial 26
Nu går vi mot slutet av vårt mest omfattande Gratis instruktioner för testverktyg för selen . Självstudierna som vi publicerar nu är den del av Selen-träningen som du har fått i förväg.
I föregående handledning höll vi vårt fokus på Kontinuerligt integrationsverktyg som heter Hudson . Det är ett gratis verktyg och har mycket fler möjligheter att bygga testprojektet, genomföra testklasserna på distans och skicka ut ett e-postmeddelande till intressenterna som informerar dem om applikationsstatus med avseende på godkända och misslyckade testfall.
I den aktuella handledningen skulle vi gå mot några avancerade koncept som direkt eller indirekt skulle hjälpa till optimera ramverket Automation och ger mer synlighet för användarna.
Således, i den aktuella handledningen, skulle vi diskutera loggningsfunktion, dess potential, felsökningsfunktioner och mycket mera.
Ibland anses loggning vara en overhead på den befintliga mekanismen för att skapa skript men experter anser att det är en av de bästa metoderna om de används i exakt proportion på grund av följande fördelar:
Fördelar med att logga in i selen-skript:
- Ger en fullständig förståelse för utförandet av testpaket
- Loggmeddelanden kan lagras i externa filer för granskning efter genomförandet
- Loggar är en exceptionell assistent för felsökning av programkörningsproblem och fel
- Loggar kan också granskas för att säkerställa applikationens hälsa av intressenterna
Vad du kommer att lära dig:
Log4j - Ett Java-baserat loggnings-API
Gå vidare till de tekniska detaljerna om loggning, låt oss diskutera ursprunget till API: t som vi skulle använda i hela log4j handledning för att generera loggar. Log4j var ett resultat av samarbete mellan människor på Secure Electronic Marketplace for Europe för att utveckla ett verktyg som skulle hjälpa oss att skapa loggar och därmed kom log4j till rampljuset år 1996. Log4j är ett open source-verktyg och licensierat under IBM Public License.
Det finns tre huvudkomponenter som utgör implementeringen av log4j. Dessa komponenter representerar detaljerna om loggnivån, format för loggmeddelandet där de skulle återges och deras sparningsmekanismer.
Beståndsdelar i Log4j
- Loggers
- Appenders
- Layouter
# 1) Loggare
Följande steg måste göras för att implementera loggare i projektet.
Steg 1 : Skapa en instans av Logger-klass
Steg 2 : Definiera loggnivå
Logger-klass - Det är ett java-baserat verktyg som har fått alla generiska metoder redan implementerade så att vi kan använda log4j.
Loggnivåer - Loggnivåer kallas populärt som utskriftsmetoder. Dessa används för att skriva ut loggmeddelandena. Det finns främst fem typer av loggnivåer.
- fel()
- varna()
- info()
- felsöka ()
- logga()
För att kunna skapa loggar behöver vi alltså bara ringa någon av utskriftsmetoderna över loggerinstansen. Vi kommer att få en bredare titt på det under implementeringsfasen.
# 2) Appenders
Nu när vi vet hur man skapar dessa loggar är nästa sak som ska dyka upp i våra sinnen att var får jag se loggarna? Svaret på denna fråga ligger i definitionen av 'Appenders'.
Appenders används konsekvent för att specificera datakällan / mediet där loggarna ska genereras. Omfattningen av datakällor sträcker sig från olika externa medier som konsolen, GUI, textfiler etc.
# 3) Layouter
Ibland önskar användaren att viss information ska läggas fram eller läggas till med varje logguttalande. Till exempel vill jag skriva ut en tidsstämpel tillsammans med mitt logguttalande. Således kan sådana krav uppnås med 'Layouts'.
Layouter är ett verktyg som gör det möjligt för användaren att välja önskat format där loggarna ska återges. Appenders och Layout har en tät koppling mellan dem. Således är vi skyldiga att kartlägga var och en av appenders med en specifik layout.
Observera att användaren används för att definiera flera appenders, varje karta har en distinkt layout.
Nu när vi är medvetna om grunderna i log4j och dess komponenter ska vi fokusera mot implementeringsfenomenet.
Låt oss förstå hela implementeringsprocessen steg för steg.
Installation / installation
För installation och installation skulle vi överväga 'Learning_Selenium' -projektet som vi redan har skapat under de tidigare sessionerna i denna serie.
Steg 1 : Det första och främsta steget är att ladda ner den senaste burken för log4j API. Burken hittar du enkelt på dess officiella distributionswebbplats - “ http://logging.apache.org/log4j/1.2/download.html ”.
Steg 2 : Nästa steg är att konfigurera byggvägen och tillhandahålla log4j.jar som ett externt bibliotek.
Genomförande
Loggning med log4j kan implementeras och konfigureras på två sätt:
- Programmatiskt via skript
- Manuellt via konfigurationsfiler
Både de ovannämnda konfigurationsmetoderna har såväl meriter som nackdelar. För denna handledning skulle vi överväga att konfigurera log4j manuellt via konfigurationsfiler baserat på dess enkelhet och enkelhet. Konfigurationsfilen är ännu en XML-fil för att konfigurera artefakter relaterade till log4j.
Skapande av log4j.xml-fil
Steg 1 . Skapa en log4j.xml-fil. Kopiera och klistra in koden nedan i konfigurationsfilen.
Genomgång av konfigurationsfilen
consoleAppender
Konsolappendern används för att skriva ut loggutdraget på konsolen.
fil appender
Filappendern används för att skriva ut logguppgifterna i en extern fil. Användaren utnyttjas för att ställa in ett på- och av-värde för den bifogade taggen som skulle berätta för systemet att lägga till och logga uttalanden till den tidigare skapade eller att skriva över de tidigare skapade loggarna och generera helt nya loggar.
'append' value= 'false' />
Värdet på filparametern är inställd på en viss plats för att meddela systemet att skapa den förväntade loggfilen vid nämnda plats. Vi anger också loggfilnamnet inom värdeparametern.
Layout
Som diskuterats i de tidiga avsnitten i denna handledning används layouterna för att specificera återgivningsmekanismen för logguttalanden. Log4j tillhandahåller olika layoutmönster. Användaren används för att ange önskat mönster i värdet på ConversionPattern-parametern.
Resultatet från ovanstående layout bör vara ungefär som:
01-07-2014 12:56:32 INFO (GmailLogin): Exempel på loggmeddelande
I utgången ovan:
- Första fältet - Datum för utförande
- Andra fältet - Exakt tid i hh: mm: ss vid vilken teststeget utfördes
- Tredje fältet - En av loggnivån
- Fjärde fältet - Testklassens namn
- Det femte fältet - Loggmeddelande
Steg 2 . Så snart vi är klara med skapandet av log4j.XML-filen är nästa steg att placera log4j.XML-filen i projektets rotmapp / baskatalog.
Programnivå Implementering
Steg 3 : Nästa steg är att använda någon av konfiguratorerna för att konfigurera och analysera log4j.xml-filen.
Syntax:
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); } } }
Notera : Loggar kan implementeras på klassnivå också istället för Test suite-nivå. Allt du behöver göra är att göra de ändringar som krävs i testklassen snarare än i testpaketet.
Steg 4 : Det nästa steget är att skapa en testklass “GmailLogin.java” under projektet. Implementera Gmail-inloggningsfunktionen inom klassen.
Steg 5 : Nästa steg är att importera loggerklassen för att kunna implementera logguttrycken.
Syntax:
importera org.apache.log4j.Logger;
Steg 6 : Nästa steg i processen är att instantiera objektet i Logger-klassen.
Syntax:
// Objektinitiering för logg
statisk Loggar logga Logger.getLogger (demo. klass .hämta namn());
Steg 7 : Den ovan skapade loggvariabeln av typen Logger skulle användas i hela testklassen för att generera logguttrycken. Se följande kod för detsamma.
Syntax:
@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): Ladda upp filen till systemet: FileExample.txt
01-07-2014 12:56:11 INFO (GmailLogin): Skicka ändringarna
01-07-2014 12:56:15 FEL (GmailLogin): Inloggning misslyckades.
UPPDATERING mars 2020
Loggar
En logg är ett meddelande som vi spelar in eller genererar för varje transaktion vi gör. Vi kan analysera loggarna för att kontrollera vad som gick rätt eller fel. Antag att om något system stängs plötsligt kan vi komma in i grundorsaken till felet genom att analysera loggarna.
Loggar genereras alltså i varje utvecklingscykel. På samma sätt kan vi också generera loggar i vår Selen-kod för testning före och efter varje testvillkor eller testuttalande, för att kontrollera om alla fungerar som förväntat.
log4j Framework
För att generera dessa loggfiler i Selen-kod använder vi log4j-ramverk som tillhandahålls av Apache. Med detta ramverk kan vi skapa våra anpassade loggar.
Klick här för att ladda ner log4j-burken från Maven-arkivet.
Vi kan generera loggar på två sätt:
- Med hjälp av filen log4j.properties
- Med hjälp av log4j.xml-filen
Dessa filer innehåller konfigurationen om vilken typ av loggar du vill generera. Du kan använda någon av dem. Om du vill använda båda får log4j.xml högre prioritet. Det föredragna sättet att generera loggar är att använda egenskapsfilen, så här kommer vi att utforska mer om att bara skapa genom egenskapsfilen.
Implementering av log4j
Ladda ner log4j jar-filen från sökvägen ovan och lägg till den i projektets sökväg. Skapa log4j.properties-filen och lägg till egenskapsfilen parallellt med din källmapp när du använder en fristående Java-applikation.
Log4j.properties-filen är en konfigurationsfil som lagrar värden i nyckel-värdeparet.
Den innehåller tre huvudkomponenter:
- Loggers: Fångar loggningsinformation.
- Appenders : Publicera loggningsinformation till en annan föredragen destination som konsoler, filer, uttag, NT-händelseloggar etc.
- Layouter : Formatera loggningsinformation i olika stilar som HTML, XML-layout, etc.
Syntax för filen log4j.properties
# 1) Definiera rotloggaren med loggningsnivån INFO och appender X (appender kan vara alla konsoler, filer, uttag, NT-händelseloggar).
log4j.rootLogger = INFO, X
#två) Ställ in appendern som heter X så att den är en File Appender.
log4j.appender.X = org.apache.log4j.FileAppender
# 3) Definiera layouten för X appender.
log4j.appender.X.layout = org.apache.log4j.PatternLayout log4j.appender.X.layout.conversionPattern = %m%n
log4j.properties Exempel
Skapa en log4j.properties-fil med hänvisning till ovanstående syntax:
# initialisera root logger med nivå INFO och skriv ut den i konsolen med stdout och fout.
log4j.rootLogger=INFO,stdout,fout
# lägg till en ConsoleAppender i loggaren för att skriva till konsolen.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# använd ett enkelt definierat layoutmönster för meddelandeformat är% m% n, som skriver ut loggningsmeddelanden i en ny rad.
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%m%n
# lägg till en FileAppender till loggerfelet.
log4j.appender.fout=org.apache.log4j.FileAppender
# Appender FILE definieras som org.apache.log4j.FileAppender. Den skriver till en fil som heter SoftwareTestingHelp.
log4j.appender.fout.File=SoftwareTestingHelp.log
# använd ett mer detaljerat meddelandemönster.
log4j.appender.fout.layout=org.apache.log4j.PatternLayout log4j.appender.fout.layout.ConversionPattern=%p %d{ISO8601} %r %c (%t) %m%n
Olika nivåer av loggning
- DEBUG
- INFO
- VARNA
- FEL
- DÖDLIG
Varje nivå har sin egen prioritet. Antag att om vi använder ”DEBUG” -nivå, loggas alla nivåmeddelanden som INFO >> VARN >> FEL >> FATAL.
Antag att om vi använder “FEL” -nivå, kommer den att ignorera DEBUG >> INFO >> WARN och den loggar bara FEL >> FATAL.
I alla dessa nivåer måste vi definiera i vår fastighetsfil. Loggarna genereras, beroende på vår konfiguration.
Implementera loggarna för samma exempel som anges ovan:
Steg 1: Skapa ett objekt för Logger-klassen.
final static Logger logger = Logger.getLogger(Frame.class);
Ovanstående metod hjälper till att få loggerobjektet. Denna metod tar antingen klassen eller namnet på klassen som ett argument. Med detta loggerobjekt kan du skapa anpassade loggar.
I det här exemplet hänvisade vi till apache log4j-ramverket. Om du använder TestNG-ramverk måste du använda TestNG-loggklassen.
hur man skapar falskt företagets e-post-ID
Här har vi försökt generera loggen utan att implementera egenskapsfilen.
Inga loggar genereras varken i konsolen eller någon skapad loggfil. Ett fel tas emot i konsolen eftersom loggfilen inte implementeras korrekt. För att implementera det måste vi använda - PropertyConfigurator-klassen. Följ steg 2.
Steg 2: Initiera Property Configurator-filen och skicka argumentet som namnet på log4j-egenskapsfilen.
PropertyConfigurator.configure (“log4j.properties”);
Komplett kod för logggenerering:
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:
Slutsats
I den aktuella handledningen fokuserade vi på teknisk implikation medan loggning implementeras i ett ramverk. Vi utnyttjade log4j-verktyget för att implementera loggning. Vi diskuterade de grundläggande komponenterna som utgör log4j ur ett användbarhetsperspektiv. Med Appenders och layouter utnyttjas användaren för att välja önskat loggningsformat / mönster och datakälla / plats.
I denna handledning undersöker vi varför loggar används i vårt test- och täckta log4j-ramverk och implementering av log4j-ramverket i Selen för att generera loggar.
Nästa handledning # 27 : I den kommande handledningen skulle vi diskutera några mer avancerade ämnen relaterade till effektivt skript och att felsöka scenarier där användaren måste hantera mus- och tangentbordshändelser. Dessutom skulle vi också diskutera hur man lagrar mer än ett webbelement i en lista.
Rekommenderad läsning
- Fördjupade förklaringar om förmörkelser för nybörjare
- Introduktion till Selen WebDriver - Selen Tutorial # 8
- Effektiv skriptning av selen och felsökning av scenarier - Selen-handledning # 27
- Gurka Selen Tutorial: Gurka Java Selen WebDriver Integration
- 30+ bästa selen-självstudier: Lär dig selen med riktiga exempel
- Hur man hittar element i Chrome- och IE-webbläsare för att bygga selen-skript - Selen-handledning # 7
- Implementering av vårt första WebDriver Script - Selenium WebDriver Tutorial # 10
- WebDriver Hela installationen och installationen med Eclipse - Selen Tutorial # 9