debugging selenium scripts with logs selenium tutorial 26
Nu gaan we naar het einde van onze meest uitgebreide Gratis tutorials voor tool voor het testen van selenium De tutorials die we nu plaatsen, maken deel uit van de geavanceerde Selenium-training.
In de vorige tutorial hielden we onze focus op het Hulpprogramma voor continue integratie genaamd Hudson Het is een gratis tool en heeft veel meer mogelijkheden om het testproject op te bouwen, de testlessen op afstand uit te voeren en een notificatie-e-mail naar de belanghebbenden te sturen om hen te informeren over de aanvraagstatus met betrekking tot geslaagde en mislukte testcases.
In de huidige tutorial zouden we naar enkele geavanceerde concepten gaan die direct of indirect zouden helpen optimaliseren van het automatiseringsraamwerk en geeft de gebruikers meer zichtbaarheid.
In de huidige zelfstudie bespreken we dus de logging-functie, zijn potentieel, debugging-mogelijkheden en veel meer.
Soms wordt logboekregistratie beschouwd als een overhead voor het bestaande mechanisme voor het maken van scripts, maar experts beschouwen het als een van de beste praktijken als het in de juiste verhouding wordt gebruikt vanwege de volgende voordelen:
hoe u een firewall op een netwerk instelt
Voordelen van inloggen in Selenium-scripts:
- Biedt een volledig begrip van de uitvoering van testsuites
- Logboekberichten kunnen worden opgeslagen in externe bestanden voor controle na de uitvoering
- Logboeken zijn een uitzonderlijke assistent bij het opsporen van fouten bij het uitvoeren van programma's en fouten
- Logboeken kunnen ook worden beoordeeld om de status van de toepassing door de belanghebbenden vast te stellen
Wat je leert:
Log4j - Een op Java gebaseerde logboekregistratie-API
Laten we verder gaan met de technische details over logboekregistratie en bespreken we de oorsprong van de API die we in het log4j zelfstudie om logboeken te genereren. Log4j was het resultaat van de gezamenlijke inspanningen van mensen bij Secure Electronic Marketplace for Europe om een hulpprogramma te ontwikkelen dat ons zou helpen bij het genereren van logboeken en daarom kwam log4j in de schijnwerpers in het jaar 1996. Log4j is een open source-tool en gelicentieerd onder IBM Public License.
Er zijn drie hoofdcomponenten die de implementatie van log4j vormen. Deze componenten vertegenwoordigen de details over het logniveau, de formaten van het logbericht waarin ze zouden worden weergegeven en hun opslagmechanismen.
Bestanddelen van Log4j
- Loggers
- Appenders
- Indelingen
# 1) Houthakkers
De volgende stappen zijn nodig om loggers in het project te implementeren.
Stap 1 : Een instantie van de Logger-klasse maken
Stap 2 : Het logboekniveau definiëren
Logger Klasse - Het is een op Java gebaseerd hulpprogramma waarvan alle generieke methoden al zijn geïmplementeerd, zodat we log4j kunnen gebruiken.
Logniveaus - Logniveaus zijn in de volksmond bekend als afdrukmethoden. Deze worden gebruikt voor het afdrukken van de logboekberichten. Er zijn hoofdzakelijk vijf soorten logboekniveaus.
- fout()
- waarschuwen()
- info ()
- debug ()
- logboek ()
Om logboeken te kunnen genereren, hoeven we alleen maar een van de afdrukmethoden aan te roepen via de loggerinstantie. Tijdens de implementatiefase gaan we er breder naar kijken.
# 2) Appenders
Nu we weten hoe we deze logboeken moeten genereren, is het volgende dat in ons opkomt: waar kan ik de logboeken bekijken? Het antwoord op deze vraag ligt in de definitie van 'Appenders'.
Appenders worden consequent gebruikt om de gegevensbron / het medium te specificeren waar de logboeken moeten worden gegenereerd. Het bereik van gegevensbronnen strekt zich uit van verschillende externe media zoals de console, GUI, tekstbestanden enz.
# 3) Indelingen
Soms wil de gebruiker dat bepaalde informatie wordt toegevoegd aan of toegevoegd aan elke log-instructie. Ik wil bijvoorbeeld een tijdstempel afdrukken samen met mijn logboekverklaring. Dergelijke vereisten kunnen dus worden vervuld door 'Layouts'.
Lay-outs zijn een hulpprogramma waarmee de gebruiker kan kiezen voor het gewenste formaat waarin de logboeken worden weergegeven. Appenders en Layout hebben een nauwe koppeling tussen hen. We zijn dus verplicht om elk van de appenders in kaart te brengen met een specifieke lay-out.
Houd er rekening mee dat de gebruiker wordt ingezet om meerdere toevoegingen te definiëren, waarbij elke kaart een andere lay-out heeft.
Nu we ons bewust zijn van de basisprincipes van log4j en zijn componenten, zullen we onze aandacht richten op het fenomeen implementatie.
Laten we het hele implementatieproces stap voor stap begrijpen.
Installatie / configuratie
Voor de installatie en configuratie zouden we het “Learning_Selenium” -project overwegen dat we al in de eerdere sessies van deze serie hebben gemaakt.
Stap 1 : De eerste en belangrijkste stap is het downloaden van de nieuwste jar voor log4j API. De pot is gemakkelijk te vinden op de officiële distributiewebsite - ' http://logging.apache.org/log4j/1.2/download.html
Stap 2 : De volgende stap is om het buildpad te configureren en log4j.jar als een externe bibliotheek op te geven.
Implementatie
Loggen met log4j kan op twee manieren worden geïmplementeerd en geconfigureerd:
- Programmatisch via script
- Handmatig via configuratiebestanden
Beide bovengenoemde configuratiemethoden hebben zowel voordelen als nadelen. Voor deze tutorial zouden we overwegen om log4j handmatig te configureren via configuratiebestanden op basis van zijn gemak en eenvoud. Het configuratiebestand is nog een ander XML-bestand om artefacten met betrekking tot log4j te configureren.
Creatie van log4j.xml-bestand
Stap 1 Maak een log4j.xml-bestand. Kopieer en plak de onderstaande code in het configuratiebestand.
Doorloop van het configuratiebestand
consoleAppender
De console-appender wordt gebruikt om de logboekinstructies op de console af te drukken.
bestand appender
De bestandsaanvrager wordt gebruikt om de logboekinstructies in een extern bestand af te drukken. De gebruiker wordt gebruikt om een aan en uit waarde in te stellen voor de toegevoegde tag die het systeem zou vertellen om instructies toe te voegen en te loggen aan de eerder gemaakte of om de eerder gemaakte logs te overschrijven en de nieuwe logs helemaal te genereren.
De waarde van de bestandsparameter wordt ingesteld op een bepaalde locatie om het systeem te informeren dat het verwachte logbestand op de genoemde locatie moet worden aangemaakt. We specificeren ook de naam van het logboekbestand binnen de parameter value.
Indeling
Zoals besproken in de eerste secties van deze zelfstudie, worden de lay-outs gebruikt om het weergavemechanisme voor logboekinstructies te specificeren. Log4j biedt verschillende opmaakpatronen. De gebruiker wordt gebruikt om het gewenste patroon in de waarde van de parameter ConversionPattern op te geven.
De uitvoer van de bovenstaande lay-out zou er ongeveer zo uit moeten zien:
01-07-2014 12:56:32 INFO (GmailLogin): Voorbeeld logbericht
In de uitvoer hierboven:
- Eerste veld - Datum van uitvoering
- Tweede veld - Exacte tijd in uu: mm: ss waarop de teststap werd uitgevoerd
- Derde veld - Een van de logniveaus
- Vierde veld - Naam van de testklasse
- Het vijfde veld - Logbericht
Stap 2 Zodra we klaar zijn met het maken van het log4j.XML-bestand, is de volgende stap om het log4j.XML-bestand in de hoofdmap / basismap van het project te plaatsen.
Implementatie op programmaniveau
Stap 3 : De volgende stap is om een van de configurators te gebruiken om het log4j.xml-bestand te configureren en te ontleden.
Syntaxis:
Opmerking : Logboeken kunnen ook op klassenniveau worden geïmplementeerd in plaats van op Testsuite-niveau. Het enige dat u hoeft te doen, is de vereiste wijzigingen in de testklasse aan te brengen in plaats van in de testsuite.
Stap 4 : De volgende stap is het maken van een testklasse 'GmailLogin.java' onder het project. Implementeer de Gmail-inlogfunctionaliteit binnen de klas.
Stap 5 : De volgende stap is het importeren van de logger-klasse om de log-instructies te kunnen implementeren.
Syntaxis:
importeer org.apache.log4j.Logger;
Stap 6 : De volgende stap in het proces is om het object van de Logger-klasse te instantiëren.
Syntaxis:
// Objectinitialisatie voor log
statisch Logboeken logboek Logger.getLogger (Demo. klasse .getName ());
Stap 7 : De hierboven gemaakte log-variabele van het type Logger zou in de hele testklasse worden gebruikt om de log-instructies te genereren. Raadpleeg de volgende code voor hetzelfde.
Syntaxis:
Resultaat in het logbestand
01-07-2014 12:56:11 INFO (GmailLogin): Het bestand geüpload naar het systeem: FileExample.txt
01-07-2014 12:56:11 INFO (GmailLogin): De wijzigingen indienen
01-07-2014 12:56:15 FOUT (GmailLogin): Inloggen mislukt.
UPDATE op maart 2020
Logboeken
Een logboek is een bericht dat we registreren of genereren voor elke transactie die we doen. We kunnen de logboeken analyseren om te controleren wat er goed of fout is gegaan. Stel dat als een systeem abrupt sluit, we door de logboeken te analyseren de hoofdoorzaak van de storing kunnen achterhalen.
Zo worden in elke ontwikkelingscyclus logboeken gegenereerd. Op dezelfde manier kunnen we ook logboeken genereren in onze Selenium-code om voor en na elke testconditie of testverklaring te testen, om te controleren of ze allemaal werken zoals verwacht.
log4j Framework
Om deze logbestanden in Selenium-code te genereren, gebruiken we het log4j-framework van Apache. Met dit framework kunnen we onze aangepaste logboeken genereren.
Klik hier om log4j jar te downloaden van de Maven-repository.
We kunnen logboeken op 2 manieren genereren:
- Het bestand log4j.properties gebruiken
- Gebruik log4j.xml-bestand
Deze bestanden bevatten de configuratie over wat voor soort logboeken u wilt genereren. U kunt ze allemaal gebruiken. Als u beide wilt gebruiken, krijgt log4j.xml een hogere prioriteit. De beste manier om logboeken te genereren is door het eigenschappenbestand te gebruiken, dus hier zullen we meer onderzoeken over het genereren van alleen via eigenschappenbestand.
Implementatie van log4j
Download het log4j jar-bestand van het bovenstaande pad en voeg het toe aan het buildpad van je project. Maak een log4j.properties-bestand en voeg het eigenschappenbestand parallel aan uw bronmap toe wanneer u een zelfstandige Java-toepassing gebruikt.
hoe je een torrent-bestand opent op Windows
Het bestand Log4j.properties is een configuratiebestand waarin waarden worden opgeslagen in het sleutel / waarde-paar.
Het bevat 3 hoofdcomponenten:
- Loggers: Legt logboekgegevens vast.
- Appenders : Publiceer logboekinformatie naar een andere gewenste bestemming, zoals consoles, bestanden, sockets, NT-gebeurtenislogboeken, enz.
- Indelingen : Logboekinformatie opmaken in verschillende stijlen, zoals HTML, XML-indeling, enz.
Syntaxis van bestand log4j.properties
# 1) Definieer de rootlogger met het logboekniveau INFO en appender X (appender kan alle consoles, bestanden, sockets, NT-gebeurtenislogboeken zijn).
#twee) Stel de appender met de naam X in als File Appender.
# 3) Definieer de lay-out voor de X-appender.
log4j.properties Voorbeeld
Maak een log4j.properties-bestand, verwijzend naar de bovenstaande syntaxis:
# initialiseer rootlogger met niveau INFO en print het in de console met stdout en fout.
# voeg een ConsoleAppender toe aan de logger-stdout om naar de console te schrijven.
# gebruik een eenvoudig lay-outpatroon van het berichtformaat dat is gedefinieerd als% m% n, dat logboekberichten in een nieuwe regel afdrukt.
# voeg een FileAppender toe aan de logger fout.
# De appender FILE is gedefinieerd als org.apache.log4j.FileAppender. Het schrijft naar een bestand met de naam SoftwareTestingHelp.
# gebruik een meer gedetailleerd berichtpatroon.
Verschillende niveaus van logboekregistratie
- DEBUG
- INFO
- WAARSCHUWEN
- FOUT
- FATAAL
Elk niveau heeft zijn eigen prioriteit. Stel dat als we het 'DEBUG' -niveau gebruiken, het alle niveau-berichten zal loggen, zoals INFO >> WARN >> ERROR >> FATAL.
Stel dat als we het 'ERROR' -niveau gebruiken, het DEBUG >> INFO >> WARN negeert en alleen ERROR >> FATAL logt.
In al deze niveaus moeten we definiëren in ons eigenschappenbestand. De logboeken worden gegenereerd, afhankelijk van onze configuratie.
Implementatie van de logboeken voor hetzelfde voorbeeld waarnaar hierboven wordt verwezen:
Stap 1: Maak een object voor de Logger-klasse.
De bovenstaande methode helpt om het logger-object te krijgen. Deze methode gebruikt klasse of de naam van de klasse als argument. Met dit logger-object kunt u aangepaste logboeken genereren.
In dit voorbeeld hebben we verwezen naar het apache log4j-framework, als u TestNG-framework gebruikt, moet u de TestNG-log-klasse gebruiken.
Hier hebben we geprobeerd het logboek te genereren zonder het eigenschappenbestand te implementeren.
Er worden geen logboeken gegenereerd in de console en er worden geen logbestanden gemaakt. Er wordt een fout ontvangen in de console omdat het logbestand niet correct is geïmplementeerd. Om het te implementeren, moeten we de - PropertyConfigurator-klasse gebruiken. Volg stap 2.
Stap 2: Initialiseer het bestand Eigenschappenconfigurator en geef het argument door als de naam van het log4j-eigenschappenbestand.
PropertyConfigurator.configure ('log4j.properties');
Volledige code voor het genereren van logboekbestanden:
Eigenschappenbestand:
Gevolgtrekking
In de huidige tutorial hebben we ons gericht op de technische implicaties bij het implementeren van logging in een raamwerk. We hebben gebruik gemaakt van het log4j-hulpprogramma om logboekregistratie te implementeren. We bespraken de basiscomponenten waaruit log4j bestaat vanuit een bruikbaarheidsperspectief. Met de toevoegingen en lay-outs wordt de gebruiker gebruikt om het gewenste logboekformaat / patroon en de gegevensbron / locatie te kiezen.
In deze tutorial onderzoeken we waarom logs worden gebruikt in ons test- en behandelde log4j-framework, en de implementatie van het log4j-framework in Selenium voor het genereren van logs.
Volgende les # 27 : In de komende tutorial zullen we enkele meer geavanceerde onderwerpen bespreken die verband houden met efficiënte scripting en om scenario's op te lossen waar de gebruiker muis- en toetsenbordgebeurtenissen moet afhandelen. Bovendien zouden we ook bespreken hoe u meer dan één webelement in een lijst kunt opslaan.
Aanbevolen literatuur
- Diepgaande Eclipse-zelfstudies voor beginners
- Inleiding tot Selenium WebDriver - Selenium Tutorial # 8
- Efficiënte Selenium-scripts en scenario's voor probleemoplossing - Selenium-zelfstudie # 27
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- 30+ beste selenium-zelfstudies: leer selenium met echte voorbeelden
- Elementen zoeken in Chrome- en IE-browsers voor het bouwen van Selenium-scripts - Selenium-zelfstudie # 7
- Implementatie van ons eerste WebDriver-script - Selenium WebDriver-zelfstudie # 10
- WebDriver Volledige installatie en installatie met Eclipse - Selenium Tutorial # 9