debugging selenium scripts with logs selenium tutorial 26
Ara anem cap al final del nostre programa més complet Tutorials gratuïts per a l'eina de proves de seleni . Els tutorials que publiquem ara formen part de la formació avançada de Selenium.
Al tutorial anterior, ens vam centrar en el Eina d'integració contínua anomenada Hudson . És una eina gratuïta i té moltes més funcions per construir el projecte de proves, executar les classes de prova de manera remota i enviar un correu electrònic de notificació als grups d'interès informant-los sobre l'estat de la sol·licitud respecte dels casos de prova superats i fallits.
En el tutorial actual, ens dirigiríem cap a alguns conceptes avançats que, directament o indirectament, ajudarien optimització del marc d’automatització i aporta més visibilitat als usuaris.
Per tant, en el tutorial actual, parlaríem de funció de registre, el seu potencial, capacitats de depuració i molt més.
De vegades, es considera que el registre és una despesa general del mecanisme de creació de seqüències existent, però els experts consideren que és una de les millors pràctiques si s’utilitza en la proporció exacta a causa dels avantatges següents:
quina descàrrega de música és la millor
Avantatges de registrar-se a Selenium Scripts:
- Ofereix una comprensió completa de l'execució de les suites de prova
- Els missatges de registre es poden emmagatzemar en fitxers externs per a un control posterior a l'execució
- Els registres són un assistent excepcional en la depuració de problemes i fallades d’execució del programa
- Els registres també es poden revisar per determinar la salut de l’aplicació pels agents interessats
Què aprendreu:
Log4j: una API de registre basada en Java
Passant als detalls tècnics sobre el registre, anem a discutir l'origen de l'API que faríem servir al llarg de log4j tutorial per generar registres. Log4j va ser el resultat dels esforços de col·laboració de persones de Secure Electronic Marketplace for Europe per desenvolupar una utilitat que ens ajudés a generar registres i, per tant, el log4j va entrar a la llum l'any 1996. Log4j és una eina de codi obert i llicenciada sota la llicència pública IBM.
Hi ha tres components principals que constitueixen la implementació de log4j. Aquests components representen els detalls sobre el nivell de registre, els formats del missatge de registre en què es representarien i els seus mecanismes d’emmagatzematge.
Constituents de Log4j
- Llenyataires
- Annexos
- Dissenys
# 1) Registradors
Cal fer els passos següents per implementar registres al projecte.
Pas 1 : Creació d'una instància de classe Logger
Pas 2 : Definició del nivell de registre
Classe Logger - És una utilitat basada en Java que té tots els mètodes genèrics ja implementats de manera que estem habilitats per utilitzar log4j.
Nivells de registre - Els nivells de registre es coneixen popularment com a mètodes d'impressió. S’utilitzen per imprimir els missatges de registre. Hi ha principalment cinc tipus de nivells de registre.
- error ()
- advertir ()
- info ()
- depurar ()
- registre()
Per tant, per poder generar registres, tot el que hem de fer és trucar a qualsevol dels mètodes d'impressió a través de la instància de registre. En tindrem una visió més àmplia durant la fase d’implementació.
# 2) Annexors
Ara que ja sabem com generar aquests registres, el següent que hauria d’aparèixer a la nostra ment és: on puc veure els registres? La resposta a aquesta pregunta rau en la definició d ''annexors'.
Els annexos s’utilitzen constantment per especificar la font / suport de dades on s’haurien de generar els registres. L'abast de les fonts de dades s'estén des de diversos suports externs com la consola, la interfície gràfica d'usuari, els fitxers de text, etc.
# 3) Dissenys
De vegades, l'usuari vol que es precedeixi o s'afegeixi certa informació amb cada declaració de registre. Per exemple, vull imprimir una marca de temps juntament amb la meva declaració de registre. Per tant, aquests requisits es poden complir mitjançant 'Dissenys'.
Els dissenys són una utilitat que permet a l’usuari optar pel format desitjat en què es representarien els registres. Els annexos i el disseny tenen un acoblament estret entre ells. Per tant, se’ns exigeix assignar un mapa de cadascun dels annexos amb un disseny específic.
Tingueu en compte que l’usuari s’aprofita per definir diversos afegidors, cada mapa amb un disseny diferent.
Ara que som conscients dels conceptes bàsics de log4j i els seus components, orientarem el nostre enfocament cap al fenomen de la implementació.
Anem a entendre tot el procés d’implementació pas a pas.
Instal·lació / configuració
Per a la instal·lació i configuració, ens plantejaríem el projecte 'Learning_Selenium' que ja hem creat a les sessions anteriors d'aquesta sèrie.
Pas 1 : El primer pas i el més important és descarregar el darrer pot per a l'API log4j. El pot es pot trobar fàcilment al seu lloc web oficial de distribució - ' http://logging.apache.org/log4j/1.2/download.html '.
Pas 2 : El següent pas és configurar el camí de construcció i proporcionar log4j.jar com a biblioteca externa.
Implementació
El registre mitjançant log4j es pot implementar i configurar de dues maneres concretes:
- Programàticament mitjançant script
- Manualment mitjançant fitxers de configuració
Tant els mètodes de configuració esmentats tenen mèrits com mèrits. Per a aquest tutorial, ens plantejaríem configurar log4j manualment mitjançant fitxers de configuració en funció de la seva facilitat i simplicitat. El fitxer de configuració és un altre fitxer XML per configurar artefactes relacionats amb log4j.
Creació del fitxer log4j.xml
Pas 1 . Creeu un fitxer log4j.xml. Copieu i enganxeu el codi següent al fitxer de configuració.
Tutorial del fitxer de configuració
consoleAppender
L'aplicador de consola s'utilitza per imprimir les declaracions de registre a la consola.
fitxer appender
El fitxer appender s'utilitza per imprimir les declaracions de registre dins d'un fitxer extern. L’usuari s’aprofita per establir un valor d’activació i desactivació de l’etiqueta afegida que li diria al sistema que afegeixi i registri sentències a la creada anteriorment o que sobreescrigui els registres creats anteriorment i generi els registres nous.
'append' value= 'false' />
El valor del paràmetre del fitxer s’estableix en una ubicació concreta per notificar al sistema que creï el fitxer de registre previst a la ubicació esmentada. També especifiquem el nom del fitxer de registre dins del paràmetre de valor.
Disseny
Com es va comentar a les primeres seccions d’aquest tutorial, els dissenys s’utilitzen per especificar el mecanisme de representació de les sentències de registre. Log4j proporciona diversos patrons de disseny. L’usuari s’utilitza per especificar el patró desitjat al valor del paràmetre ConversionPattern.
La sortida del disseny anterior hauria de ser semblant a:
01-07-2014 12:56:32 INFO (GmailLogin): missatge de registre de mostra
A la sortida anterior:
- Primer camp: data d'execució
- Segon camp: temps exacte en hh: mm: ss en què s'ha executat el pas de prova
- Tercer camp: un del nivell de registre
- Quart camp: nom de la classe de prova
- El cinquè camp: missatge de registre
Pas 2 . Tan bon punt hàgim acabat la creació del fitxer log4j.XML, el següent pas és posar el fitxer log4j.XML al directori base / carpeta arrel del projecte.
Implementació a nivell de programa
Pas 3 : El següent pas és utilitzar qualsevol dels configuradors per configurar i analitzar el fitxer log4j.xml.
Sintaxi:
com veure l'anime gratis
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); } } }
Nota : Els registres es poden implementar a nivell de classe també en lloc de nivell de prova. Tot el que heu de fer és fer els canvis necessaris a la classe de proves en lloc de fer-ho a la suite de proves.
Pas 4 : El següent pas és crear una classe de prova 'GmailLogin.java' dins del projecte. Implementeu la funcionalitat d'inici de sessió de Gmail a la classe.
Pas 5 : El següent pas és importar la classe de registre per poder implementar les sentències de registre.
Sintaxi:
importació org.apache.log4j.Logger;
Pas 6 : El següent pas del procés és instanciar l'objecte de la classe Logger.
Sintaxi:
// Inicialització d'objectes per al registre
estàtic Registres registre Logger.getLogger (demostració. classe .getName ());
Pas 7 : La variable de registre creada anteriorment del tipus Logger s'utilitzarà a tota la classe de prova per generar les sentències de registre. Consulteu el codi següent per obtenir el mateix.
Sintaxi:
@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 al fitxer de registre
01-07-2014 12:56:11 INFO (GmailLogin): s'ha penjat el fitxer al sistema: FileExample.txt
01-07-2014 12:56:11 INFO (GmailLogin): enviament dels canvis
01-07-2014 12:56:15 ERROR (GmailLogin): inici de sessió sense èxit.
ACTUALITZACIÓ el març de 2020
Registres
Un registre és un missatge que estem enregistrant o generant per a cada transacció que fem. Podem analitzar els registres per comprovar què ha funcionat correctament o malament. Suposem que si algun sistema es tanca bruscament analitzant els registres, podem arribar a la causa arrel del fracàs.
Així, es generen registres a cada cicle de desenvolupament. De la mateixa manera, també podem generar registres al nostre codi Selenium per provar-los abans i després de cada condició o declaració de prova, per comprovar si tots funcionen com s’esperava.
marc log4j
Per generar aquests fitxers de registre al codi Selenium, fem servir el marc log4j proporcionat per Apache. Amb aquest marc, podem generar els nostres registres personalitzats.
Feu clic a aquí per descarregar log4j jar del repositori Maven.
Podem generar registres de dues maneres:
- Utilitzant el fitxer log4j.properties
- Utilitzant el fitxer log4j.xml
Aquests fitxers contindran la configuració del tipus de registres que voleu generar. Podeu utilitzar-ne qualsevol. Si voleu utilitzar les dues coses, tindreu prioritat més gran a log4j.xml. La manera preferida de generar registres és fer servir el fitxer de propietats, de manera que aquí explorarem més informació sobre la generació només mitjançant el fitxer de propietats.
Implementació de log4j
Baixeu el fitxer jar log4j des del camí anterior i afegiu-lo al camí de compilació del projecte. Creeu el fitxer log4j.properties i afegiu el fitxer de propietats paral·lel a la carpeta d'origen quan utilitzeu una aplicació Java independent.
El fitxer Log4j.properties és un fitxer de configuració que emmagatzema valors al parell clau-valor.
Conté 3 components principals:
- Registradors: Captura informació de registre.
- Annexos : Publiqueu informació de registre a una destinació preferida diferent, com ara consoles, fitxers, sòcols, registres d'esdeveniments NT, etc.
- Dissenys : Formateu informació de registre en diferents estils com HTML, Disseny XML, etc.
Sintaxi del fitxer log4j.properties
# 1) Definiu el registrador arrel amb el nivell de registre INFO i appender X (appender pot ser qualsevol consola, fitxer, sòcol, registre d’esdeveniments NT).
log4j.rootLogger = INFO, X
# 2) Configureu l’administrador anomenat X com a administrador de fitxers.
log4j.appender.X = org.apache.log4j.FileAppender
# 3) Definiu el disseny per a X appender.
log4j.appender.X.layout = org.apache.log4j.PatternLayout log4j.appender.X.layout.conversionPattern = %m%n
Exemple log4j.properties
Creeu un fitxer log4j.properties, fent referència a la sintaxi anterior:
# inicialitzeu el logger root amb INFO de nivell i imprimiu-lo a la consola mitjançant stdout i fout.
log4j.rootLogger=INFO,stdout,fout
# afegiu un ConsoleAppender a l'estàndard de registre per escriure a la consola.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# utilitzeu un patró de disseny de format de missatge simple definit que és% m% n, que imprimeix els missatges de registre en una nova línia.
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%m%n
# afegiu un FileAppender al logout.
log4j.appender.fout=org.apache.log4j.FileAppender
# El fitxer appender es defineix com org.apache.log4j.FileAppender. S'escriu en un fitxer anomenat SoftwareTestingHelp.
log4j.appender.fout.File=SoftwareTestingHelp.log
# utilitzeu un patró de missatges més detallat.
log4j.appender.fout.layout=org.apache.log4j.PatternLayout log4j.appender.fout.layout.ConversionPattern=%p %d{ISO8601} %r %c (%t) %m%n
Diferents nivells de registre
- DEBUG
- INFO
- ADVERTÈNCIA
- ERROR
- FATAL
Cada nivell té la seva pròpia prioritat. Suposem que si fem servir el nivell 'DEBUG', llavors registrarà tots els missatges de nivell com INFO >> ADVERTÈNCIA >> ERROR >> FATAL.
Suposem que si fem servir el nivell 'ERROR', ignorarà DEBUG >> INFO >> WARN i només registrarà ERROR >> FATAL.
En tots aquests nivells hem de definir-los al fitxer de propietats. Els registres es generaran, depenent de la nostra configuració.
Implementació dels registres per al mateix exemple esmentat anteriorment:
Pas 1: Creeu un objecte per a la classe Logger.
final static Logger logger = Logger.getLogger(Frame.class);
El mètode anterior ajuda a obtenir l'objecte registrador. Aquest mètode prendrà la classe o el nom de la classe com a argument. Mitjançant aquest objecte registrador, podeu generar registres personalitzats.
En aquest exemple, hem fet referència al marc apache log4j, si utilitzeu el marc TestNG, haureu d’utilitzar la classe de registre TestNG.
Aquí hem intentat generar el registre, sense implementar el fitxer de propietats.
No es generen registres a la consola ni a cap fitxer de registre creat. Es rep un error a la consola ja que el fitxer de registre no està implementat correctament. Per implementar-lo, hem d’utilitzar la classe - PropertyConfigurator. Seguiu el pas 2.
Pas 2: Inicialitzeu el fitxer Configurador de propietats i passeu l'argument com a nom del fitxer de propietats log4j.
no s'ha instal·lat cap reproductor de fitxers swf on flash d'ona de xoc
PropertyConfigurator.configure ('log4j.properties');
Codi complet per a la generació de fitxers de registre:
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'); } }
Fitxer de propietats:
Conclusió
En el tutorial actual, ens vam centrar en el implicació tècnica en implementar el registre en un marc. Hem aprofitat la utilitat log4j per implementar el registre. Vam discutir els components bàsics que constitueixen log4j des d’una perspectiva d’usabilitat. Amb els annexos i els dissenys, l'usuari es pot aprofitar per triar el format / patró de registre desitjat i la font / ubicació de dades.
En aquest tutorial, explorem per què s’utilitzen els registres al nostre marc log4j de prova i cobert, i la implementació del marc log4j a Selenium per generar registres.
Pròxim tutorial núm. 27 : En el proper tutorial, parlaríem d'alguns temes més avançats relacionats amb scripting eficient i per resoldre problemes on l'usuari ha de gestionar esdeveniments de ratolí i teclat. A més, també parlaríem de com emmagatzemar més d’un element web en una llista.
Lectura recomanada
- Tutorials Eclipse en profunditat per a principiants
- Introducció a Selenium WebDriver - Tutorial Selenium # 8
- Escenaris de scripts i resolució de problemes de Selenium eficients: tutorial núm. 27 de Selenium
- Tutorial de Cogombre Selenium: Integració de Cogombre Java Selenium WebDriver
- 30+ millors tutorials sobre seleni: apreneu el seleni amb exemples reals
- Com es poden localitzar elements als navegadors Chrome i IE per crear scripts Selenium - Tutorial Selenium # 7
- Implementació del nostre primer script WebDriver - Selenium WebDriver Tutorial # 10
- Configuració i instal·lació senceres de WebDriver amb Eclipse - Tutorial Selenium # 9