debugging selenium scripts with logs selenium tutorial 26
Teraz sa posúvame ku koncu nášho najkomplexnejšieho Bezplatné návody pre nástroj na testovanie selénu . Výukové programy, ktoré teraz zverejňujeme, sú súčasťou pokročilého tréningu selénu.
V predchádzajúcom tutoriáli sme sa sústredili na Nástroj na nepretržitú integráciu pomenovaný ako Hudson . Je to bezplatný nástroj a má oveľa viac možností na zostavenie testovacieho projektu, vzdialené vykonávanie testovacích tried a zasielanie e-mailov s upozornením zainteresovaným stranám, ktoré ich informujú o stave aplikácie v súvislosti s úspešnými a neúspešnými testovacími prípadmi.
V aktuálnom tutoriáli by sme sa posunuli k niektorým pokročilým koncepciám, ktoré by priamo alebo nepriamo pomohli v optimalizácia automatizačného rámca a prináša lepšiu viditeľnosť pre používateľov.
V aktuálnom návode by sme teda diskutovali o logovacia funkcia, jej potenciál, ladiace schopnosti a oveľa viac.
Niekedy sa protokolovanie považuje za réžiu existujúceho mechanizmu vytvárania skriptov, ale odborníci ho považujú za jeden z najlepších postupov, ak sa používa v presnom pomere, a to z dôvodu nasledujúcich výhod:
Výhody prihlásenia do skriptov selénu:
- Poskytuje úplné pochopenie vykonania testovacích súprav
- Protokoly môžu byť uložené do externých súborov na účely kontroly po vykonaní
- Protokoly sú výnimočným pomocníkom pri ladení problémov a zlyhaní pri vykonávaní programu
- Zúčastnené strany môžu tiež skontrolovať protokoly, aby sa zistilo zdravie aplikácie
Čo sa dozviete:
Log4j - rozhranie Java Logging API
Ak prejdeme k technickým podrobnostiam protokolovania, poďme diskutovať o pôvode API, ktoré by sme používali v celom systéme výukový program log4j generovať protokoly. Log4j bol výsledkom spoločného úsilia ľudí na Secure Electronic Marketplace pre Európu vyvinúť nástroj, ktorý by nám pomohol generovať protokoly, a preto sa log4j dostal do centra pozornosti v roku 1996. Log4j je nástroj s otvoreným zdrojom a licencovaný na základe verejnej licencie IBM.
Implementáciu log4j tvoria tri hlavné komponenty. Tieto komponenty predstavujú podrobnosti o úrovni protokolu, formátoch správy protokolu, v ktorej by sa mali zobrazovať, a mechanizmoch ich ukladania.
Zložky Log4j
- Drevorubači
- Dodatky
- Rozloženia
# 1) Drevorubači
Nasledujúce kroky je potrebné urobiť, aby sa do projektu implementovali protokolovacie nástroje.
Krok 1 : Vytvára sa inštancia triedy Logger
Krok 2 : Definovanie úrovne protokolu
Trieda dreva - Je to nástroj založený na jave, ktorý má všetky už implementované generické metódy, takže máme povolené používať log4j.
Úrovne denníka - Úrovne denníkov sa ľudovo nazývajú metódy tlače. Používajú sa na tlač protokolových správ. Existuje predovšetkým päť druhov úrovní denníka.
- chyba()
- varovať ()
- Info()
- ladiť ()
- denník ()
Aby sme teda mohli generovať protokoly, musíme iba zavolať ktorúkoľvek z metód tlače cez inštanciu záznamníka. Počas fázy implementácie sa jej budeme podrobnejšie venovať.
# 2) Dodatky
Teraz, keď vieme, ako tieto protokoly generovať, mala by sa nám v mysli objaviť ďalšia vec, kde si môžem tieto protokoly pozrieť? Odpoveď na túto otázku spočíva v definícii „príveskov“.
Dodatky sa dôsledne používajú na určenie zdroja údajov / média, kde sa majú protokoly generovať. Rozsah zdrojov údajov siaha od rôznych externých médií, ako sú konzola, grafické používateľské rozhranie, textové súbory atď.
# 3) Rozloženia
Užívateľ si občas želá, aby boli určité informácie pred každým oznámením protokolu doplnené alebo pripojené. Napríklad by som chcel vytlačiť časovú pečiatku spolu s mojim výpisom z denníka. Takéto požiadavky je možné dosiahnuť pomocou „usporiadania“.
Rozloženia sú pomôcka, ktorá umožňuje používateľovi zvoliť požadovaný formát, v ktorom by sa protokoly vykresľovali. Prílohy a rozloženie sú medzi sebou pevne spojené. Preto sme povinní mapovať každého z príloh s konkrétnym rozložením.
Upozorňujeme, že používateľom sa umožňuje definovať viac príloh, pričom každá mapa má odlišné rozloženie.
Teraz, keď sme si vedomí základov log4j a jeho komponentov, posunieme naše zameranie smerom k fenoménu implementácie.
Pochopme krok za krokom celý proces implementácie.
Inštalácia / nastavenie
Pri inštalácii a nastavení by sme uvažovali o projekte „Learning_Selenium“, ktorý sme už vytvorili v predchádzajúcich reláciách tejto série.
Krok 1 : Prvým a najdôležitejším krokom je stiahnutie najnovšej verzie jar pre API log4j. Nádobku možno ľahko nájsť na jej oficiálnej distribučnej webovej stránke - “ http://logging.apache.org/log4j/1.2/download.html “.
Krok 2 : Ďalším krokom je konfigurácia cesty zostavenia a poskytnutie súboru log4j.jar ako externej knižnice.
Implementácia
Protokolovanie pomocou protokolu log4j je možné implementovať a konfigurovať dvomi spôsobmi:
- Programovo pomocou skriptu
- Ručne cez Konfiguračné súbory
Obidve vyššie uvedené metódy konfigurácie majú svoje výhody aj nedostatky. Pre tento tutoriál by sme zvážili manuálnu konfiguráciu log4j prostredníctvom konfiguračných súborov na základe jeho ľahkosti a jednoduchosti. Konfiguračný súbor je ďalším súborom XML na konfiguráciu artefaktov súvisiacich s log4j.
Vytvorenie súboru log4j.xml
Krok 1 . Vytvorte súbor log4j.xml. Skopírujte a vložte nasledujúci kód do konfiguračného súboru.
Návod na konfiguračný súbor
consoleAppender
Pripojenie konzoly sa používa na tlač výpisov z denníka na konzole.
spisovateľ
Aplikácia súboru sa používa na tlač výpisov z denníka v externom súbore. Užívateľ je nastavený tak, aby nastavil hodnotu zapnutia a vypnutia pre pripojenú značku, ktorá povedie systému, aby pripojil a prihlásil príkazy k predtým vytvorenému, alebo aby prepísal predtým vytvorené protokoly a vygeneroval celkom nové protokoly.
'append' value= 'false' />
Hodnota parametra súboru je nastavená na konkrétne miesto, aby informovala systém o vytvorení predpokladaného súboru protokolu na uvedenom mieste. V parametri hodnoty tiež špecifikujeme názov súboru protokolu.
Rozloženie
Ako je uvedené v úvodných častiach tohto tutoriálu, rozloženia sa používajú na určenie mechanizmu vykreslenia pre príkazy protokolu. Log4j poskytuje rôzne vzory rozloženia. Používateľ má možnosť zadať požadovaný vzor v hodnote parametra ConversionPattern.
Výstup z vyššie uvedeného rozloženia by mal byť asi ako:
01-07-2014 12:56:32 INFO (GmailLogin): Ukážková správa denníka
Vo výstupe vyššie:
- Prvé pole - dátum vykonania
- Druhé pole - presný čas v hh: mm: ss, v ktorom bol vykonaný testovací krok
- Tretie pole - jedna z úrovní denníka
- Štvrté pole - Názov testovacej triedy
- Piate pole - Protokol správy
Krok 2 . Len čo skončíme s vytvorením súboru log4j.XML, ďalším krokom je vloženie súboru log4j.XML do koreňového priečinka / základného adresára projektu.
Implementácia na úrovni programu
Krok 3 : Ďalším krokom je použitie ktoréhokoľvek z konfigurátorov na konfiguráciu a analýzu súboru log4j.xml.
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); } } }
Poznámka : Záznamy je možné implementovať na úrovni triedy aj namiesto úrovne testovacej sady. Všetko, čo musíte urobiť, je vykonať požadované zmeny v testovacej triede, a nie v testovacej skupine.
Krok 4 : Ďalším krokom je vytvorenie testovacej triedy „GmailLogin.java“ v rámci projektu. Implementujte do triedy funkčnosť prihlásenia do Gmailu.
Krok 5 : Ďalším krokom je import triedy protokolovacích nástrojov, aby bolo možné implementovať príkazy protokolu.
Syntax:
import org.apache.log4j.Logger;
Krok 6 : Ďalším krokom v procese je vytvorenie inštancie objektu triedy Logger.
Syntax:
// Inicializácia objektu pre protokol
statický Záznamy log Logger.getLogger (ukážka. trieda .getName ());
Krok 7 : Vyššie vytvorená premenná protokolu typu Logger by sa použila v celej testovacej triede na generovanie príkazov protokolu. Rovnaký odkaz nájdete v nasledujúcom kóde.
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.'); } }
Výsledok v protokolovom súbore
01-07-2014 12:56:11 INFO (GmailLogin): Nahral súbor do systému: FileExample.txt
01-07-2014 12:56:11 INFO (GmailLogin): Odosielanie zmien
01-07-2014 12:56:15 CHYBA (GmailLogin): Neúspešné prihlásenie.
AKTUALIZÁCIA v marci 2020
Záznamy
Denník je správa, ktorú zaznamenávame alebo generujeme pre každú transakciu, ktorú robíme. Môžeme analyzovať protokoly a skontrolovať, čo sa stalo správnym alebo nesprávnym. Predpokladajme, že ak sa niektorý systém náhle uzavrie, potom pomocou analýzy protokolov môžeme zistiť hlavnú príčinu poruchy.
Protokoly sa teda generujú v každom vývojovom cykle. Rovnakým spôsobom môžeme tiež generovať protokoly v našom kóde selénu na testovanie pred a po každej testovacej podmienke alebo testovacom vyhlásení, aby sme skontrolovali, či všetky fungujú podľa očakávania.
rámec log4j
Na generovanie týchto protokolových súborov v selénovom kóde používame rámec log4j, ktorý poskytuje Apache. Pomocou tohto rámca môžeme generovať naše prispôsobené protokoly.
Kliknite tu na stiahnutie log4j jar z úložiska Maven.
Protokoly môžeme generovať dvoma spôsobmi:
- Pomocou súboru log4j.properties
- Pomocou súboru log4j.xml
Tieto súbory budú obsahovať konfiguráciu toho, aký druh protokolov chcete generovať. Môžete použiť ktorékoľvek z nich. Ak chcete použiť oboje, potom bude mať log4j.xml vyššiu prioritu. Preferovaným spôsobom generovania protokolov je použitie súboru vlastností, takže tu preskúmame viac informácií o generovaní iba prostredníctvom súboru vlastností.
Implementácia protokolu log4j
Stiahnite si súbor log4j jar z vyššie uvedenej cesty a pridajte ho do svojej cesty zostavenia projektu. Vytvorte súbor log4j.properties a pridajte súbor vlastností paralelne k zdrojovému priečinku, ak používate samostatnú aplikáciu Java.
Súbor Log4j.properties je konfiguračný súbor, ktorý uchováva hodnoty v páre kľúč - hodnota.
Obsahuje 3 hlavné komponenty:
- Drevorubači: Zachytáva informácie o protokolovaní.
- Dodatky : Publikujte informácie o protokolovaní na rôzne preferované ciele, ako sú konzoly, súbory, zásuvky, protokoly udalostí NT atď.
- Rozloženia : Naformátujte informácie o protokolovaní do rôznych štýlov, ako je HTML, rozloženie XML atď.
Syntax súboru log4j.properties
# 1) Definujte koreňový záznamník s úrovňou protokolovania INFO a appender X (appender môžu byť akékoľvek konzoly, súbory, zásuvky, protokoly udalostí NT).
log4j.rootLogger = INFO, X
#dva) Nastaviť prihlasovateľa s názvom X ako Prikladateľa súborov.
log4j.appender.X = org.apache.log4j.FileAppender
# 3) Definujte rozloženie pre X appender.
log4j.appender.X.layout = org.apache.log4j.PatternLayout log4j.appender.X.layout.conversionPattern = %m%n
log4j.properties Príklad
Vytvorte súbor log4j.properties s odkazom na vyššie uvedenú syntax:
# inicializujte koreňový záznamník pomocou úrovne INFO a vytlačte ho v konzole pomocou štandardného výstupu a výstupu.
log4j.rootLogger=INFO,stdout,fout
# pridajte ConsoleAppender do štandardného výstupu záznamníka, aby ste mohli zapisovať do konzoly.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# použite jednoduchý vzorec rozloženia formátu správy definovaný ako% m% n, ktorý vytlačí protokolované správy do nového riadku.
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%m%n
# pridať FileAppender do pozície loggeru.
log4j.appender.fout=org.apache.log4j.FileAppender
# Prikladač SÚBOR je definovaný ako org.apache.log4j.FileAppender. Zapíše sa do súboru s názvom SoftwareTestingHelp.
log4j.appender.fout.File=SoftwareTestingHelp.log
# použite podrobnejší vzor správ.
log4j.appender.fout.layout=org.apache.log4j.PatternLayout log4j.appender.fout.layout.ConversionPattern=%p %d{ISO8601} %r %c (%t) %m%n
Rôzne úrovne ťažby dreva
- DEBUG
- INFO
- POZOR
- CHYBA
- FATÁLNE
Každá úroveň má svoju vlastnú prioritu. Predpokladajme, že ak použijeme úroveň „DEBUG“, budú sa do nej zapisovať všetky správy na úrovni ako INFO >> VAROVANIE >> CHYBA >> FATÁLNE.
súbor SWF sa neotvára v Chrome
Predpokladajme, že ak použijeme úroveň „CHYBA“, bude ignorovať DEBUG >> INFO >> VAROVAŤ a zaznamená iba CHYBU >> FATÁLNE.
Na všetkých týchto úrovniach musíme definovať v našom súbore vlastností. Denníky sa budú generovať v závislosti od našej konfigurácie.
Implementácia protokolov pre rovnaký príklad uvedený vyššie:
Krok 1: Vytvorte objekt pre triedu Logger.
final static Logger logger = Logger.getLogger(Frame.class);
Vyššie uvedená metóda pomáha získať objekt záznamníka. Táto metóda vezme ako argument buď triedu, alebo názov triedy. Pomocou tohto objektu záznamníka môžete generovať prispôsobené protokoly.
V tomto príklade sme sa zmienili o apache log4j framework, ak používate TestNG framework, musíte použiť triedu protokolu TestNG.
Tu sme sa pokúsili vygenerovať protokol bez implementácie súboru vlastností.
V konzole ani v vytvorenom protokolovom súbore sa negenerujú žiadne protokoly. V konzole sa vyskytla chyba, pretože súbor protokolu nie je implementovaný správne. Na jeho implementáciu musíme použiť - triedu PropertyConfigurator. Postupujte podľa kroku 2.
Krok 2: Inicializujte súbor konfigurátora vlastností a zadajte argument ako názov súboru vlastností log4j.
PropertyConfigurator.configure („log4j.properties“);
Kompletný kód na generovanie protokolových súborov:
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'); } }
Súbor vlastností:
Záver
V aktuálnom návode sme sa zamerali na technické dôsledky pri implementácii protokolovania v rámci. Na implementáciu protokolovania sme využili obslužný program log4j. Diskutovali sme o základných komponentoch, ktoré tvoria log4j z hľadiska použiteľnosti. Pomocou doplnkov a rozvrhnutí je používateľom umožnené zvoliť požadovaný formát / vzor protokolovania a zdroj / umiestnenie údajov.
V tomto tutoriáli skúmame, prečo sa v našom testovacom a zahrnutom rámci log4j používajú protokoly, a implementácia rámca log4j v seléne na generovanie protokolov.
Nasledujúci tutoriál # 27 : V nadchádzajúcom tutoriáli by sme diskutovali o niektorých pokročilejších témach týkajúcich sa efektívne skriptovanie a riešenie scenárov kde je používateľ povinný spracovávať udalosti myši a klávesnice. Okrem toho by sme diskutovali aj o tom, ako uložiť viac ako jeden webový prvok do zoznamu.
Odporúčané čítanie
- Hĺbkové návody pre zatmenie pre začiatočníkov
- Úvod do softvéru Selenium WebDriver - Výučba selénu č. 8
- Efektívne scenáre selénu a riešenie problémov - scenáre selénu # 27
- Výukový program Cucumber Selenium: Cucumber Java Selenium WebDriver Integration
- 30+ najlepších návodov na selén: Naučte sa selén na skutočných príkladoch
- Ako nájsť prvky v prehliadačoch Chrome a IE na vytváranie skriptov selénu - selénový tutoriál # 7
- Implementácia nášho prvého skriptu WebDriver - výučba selénu WebDriver č. 10
- Celé nastavenie a inštalácia WebDriver s výučbou Eclipse - Selenium č. 9