debugging selenium scripts with logs selenium tutorial 26
Nyní se přibližujeme ke konci našeho nejkomplexnějšího Návody zdarma pro nástroj pro testování selenu . Výukové programy, které nyní zveřejňujeme, jsou součástí pokročilého tréninku selenu.
V předchozím tutoriálu jsme se soustředili na Nástroj pro kontinuální integraci s názvem Hudson . Je to bezplatný nástroj a má mnohem více funkcí pro sestavení testovacího projektu, vzdálené provádění testovacích tříd a zaslání upozornění e-mailem zúčastněným stranám s informacemi o stavu aplikace s ohledem na úspěšné a neúspěšné testovací případy.
V aktuálním tutoriálu bychom se pohybovali směrem k některým pokročilým konceptům, které by přímo nebo nepřímo pomohly optimalizace rámce automatizace a přináší uživatelům větší viditelnost.
V aktuálním výukovém programu bychom tedy diskutovali o funkce protokolování, její potenciál, možnosti ladění a mnohem víc.
Někdy je protokolování považováno za režii stávajícího mechanismu vytváření skriptů, ale odborníci ho považují za jeden z nejlepších postupů, pokud je použit v přesném poměru, a to z důvodu následujících výhod:
Výhody protokolování selenových skriptů:
- Poskytuje úplné pochopení provádění testovacích sad
- Zprávy protokolu mohou být uloženy v externích souborech pro kontrolu po spuštění
- Protokoly jsou výjimečným pomocníkem při ladění problémů a selhání při provádění programu
- Zúčastněné strany mohou také zkontrolovat protokoly, aby se ujistily o stavu aplikace
Co se naučíte:
otestujte vedoucího rozhovoru otázky a odpovědi pdf
Log4j - Java založené protokolovací API
Přejdeme k technickým podrobnostem o protokolování, pojďme diskutovat o původu API, které bychom používali v celém výukový program log4j generovat protokoly. Log4j byl výsledkem společného úsilí lidí na Secure Electronic Marketplace pro Evropu vyvinout nástroj, který by nám pomohl generovat protokoly, a proto se log4j dostal do centra pozornosti v roce 1996. Log4j je nástroj s otevřeným zdrojovým kódem a je licencován pod IBM Public License.
Implementaci log4j tvoří tři hlavní komponenty. Tyto komponenty představují podrobnosti o úrovni protokolu, formátech zprávy protokolu, ve kterých by byly vykresleny, a jejich mechanismech ukládání.
Složky Log4j
- Dřevorubci
- Dodatky
- Rozvržení
# 1) Loggery
Následující kroky je třeba provést, aby se v projektu implementovaly protokolovací nástroje.
Krok 1 : Vytváření instance třídy Logger
Krok 2 : Definování úrovně protokolu
Logger Class - Je to nástroj založený na java, který má všechny již implementované generické metody, takže máme povoleno používat log4j.
Úrovně protokolu - Úrovně protokolu jsou populárně známé jako metody tisku. Používají se pro tisk zpráv protokolu. Existuje primárně pět druhů úrovní protokolu.
- chyba()
- varovat()
- informace ()
- ladit()
- log ()
Abychom tedy mohli generovat protokoly, vše, co musíme udělat, je zavolat kteroukoli z tiskových metod přes instanci protokolovače. Během fáze implementace se tomu budeme podrobněji věnovat.
# 2) Dodatky
Teď, když víme, jak tyto protokoly generovat, měla by se nám v mysli vynořit další věc, že kde zobrazím protokoly? Odpověď na tuto otázku spočívá v definici „Appenders“.
Dodatky se důsledně používají k určení zdroje dat / média, kde by se protokoly měly generovat. Rozsah zdrojů dat se táhne od různých externích médií, jako je konzole, grafické uživatelské rozhraní, textové soubory atd.
# 3) Rozvržení
Uživatel si občas přeje, aby byly určité informace přednastaveny nebo připojeny ke každému výpisu z protokolu. Například bych chtěl vytisknout časové razítko spolu s mým výpisem protokolu. Takových požadavků lze dosáhnout pomocí „Layouts“.
Layouts are a utility that allows the user to opt for the desired format in which the logs would be rendered. Appenders a Layout mají těsnou vazbu mezi sebou. Proto jsme povinni mapovat každého z dodatků konkrétním rozvržením.
Vezměte na vědomí, že uživatel je využíván k definování více příloh, přičemž každá mapa má odlišné rozložení.
Nyní, když jsme si vědomi základů log4j a jeho komponent, zaměříme se na fenomén implementace.
Pojďme pochopit celý proces implementace krok za krokem.
Instalace / nastavení
Pro instalaci a nastavení bychom uvažovali o projektu „Learning_Selenium“, který jsme již vytvořili v dřívějších relacích této série.
Krok 1 : Prvním a nejdůležitějším krokem je stáhnout si nejnovější jar pro log4j API. Sklenici lze snadno najít na jejích oficiálních distribučních webových stránkách - “ http://logging.apache.org/log4j/1.2/download.html “.
Krok 2 : Dalším krokem je konfigurace cesty sestavení a poskytnutí souboru log4j.jar jako externí knihovny.
Implementace
Protokolování pomocí log4j lze implementovat a konfigurovat dvěma způsoby:
- Programově pomocí skriptu
- Ručně prostřednictvím konfiguračních souborů
Obě výše uvedené konfigurační metody mají zásluhy i nevýhody. V tomto tutoriálu bychom zvážili ruční konfiguraci log4j prostřednictvím konfiguračních souborů na základě jeho snadnosti a jednoduchosti. Konfigurační soubor je dalším souborem XML ke konfiguraci artefaktů souvisejících s log4j.
Vytvoření souboru log4j.xml
Krok 1 . Vytvořte soubor log4j.xml. Zkopírujte a vložte níže uvedený kód do konfiguračního souboru.
Návod na konfigurační soubor
consoleAppender
Dodatek konzoly se používá k tisku výpisů protokolu na konzole.
příloha souboru
Přídavek souboru se používá k tisku výpisů protokolu v externím souboru. Uživatel je nastaven tak, aby nastavil hodnotu zapnutí a vypnutí pro připojenou značku, která by systému řekla, aby připojil a protokoloval příkazy k dříve vytvořenému, nebo aby přepsal dříve vytvořené protokoly a vygeneroval nové protokoly úplně.
'append' value= 'false' />
Hodnota parametru souboru je nastavena na konkrétní umístění, aby systém upozornil na vytvoření očekávaného souboru protokolu v uvedeném umístění. V parametru value také zadáme název souboru protokolu.
Rozložení
Jak je popsáno v prvních částech tohoto kurzu, rozložení se používají k určení mechanismu vykreslování pro příkazy protokolu. Log4j poskytuje různé vzory rozvržení. Uživatel je využíván k určení požadovaného vzoru v hodnotě parametru ConversionPattern.
Výstup z výše uvedeného rozložení by měl být něco jako:
01-07-2014 12:56:32 INFO [GmailLogin]: Ukázková zpráva protokolu
Ve výstupu výše:
- První pole - datum provedení
- Druhé pole - Přesný čas v hh: mm: ss, ve kterém byl proveden testovací krok
- Třetí pole - Jedna z úrovní protokolu
- Čtvrté pole - Název testovací třídy
- Páté pole - Protokol zprávy
Krok 2 . Jakmile jsme hotovi s vytvořením souboru log4j.XML, dalším krokem je vložení souboru log4j.XML do kořenové složky / základního adresáře projektu.
Implementace na úrovni programu
Krok 3 : Dalším krokem je použití kteréhokoli z konfigurátorů ke konfiguraci a analýze souboru 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 : Protokoly lze implementovat na úrovni třídy také místo na úrovni testovací sady. Vše, co musíte udělat, je provést požadované změny v testovací třídě, nikoli v testovací sadě.
Krok 4 : Dalším krokem je vytvoření testovací třídy „GmailLogin.java“ v rámci projektu. Implementujte funkce přihlášení do Gmailu ve třídě.
Krok 5 : Dalším krokem je import třídy loggeru, aby bylo možné implementovat příkazy protokolu.
Syntax:
import org.apache.log4j.Logger;
Krok 6 : Dalším krokem v tomto procesu je vytvořit instanci objektu třídy Logger.
Syntax:
// Inicializace objektu pro log
statický Protokoly log Logger.getLogger (ukázka. třída .getName ());
Krok 7 : Výše vytvořená proměnná protokolu typu Logger by byla použita v celé testovací třídě ke generování příkazů protokolu. Následující kód naleznete stejně.
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ýsledek v souboru protokolu
01-07-2014 12:56:11 INFO [GmailLogin]: Nahrál soubor do systému: FileExample.txt
01-07-2014 12:56:11 INFO [GmailLogin]: Odesílání změn
01-07-2014 12:56:15 CHYBA [GmailLogin]: Neúspěšné přihlášení.
AKTUALIZACE v březnu 2020
Protokoly
Protokol je zpráva, kterou zaznamenáváme nebo generujeme pro každou transakci, kterou provádíme. Můžeme analyzovat protokoly a zkontrolovat, co se stalo správně nebo špatně. Předpokládejme, že pokud se nějaký systém náhle zavře, pak analýzou protokolů se můžeme dostat k hlavní příčině poruchy.
Protokoly se tedy generují v každém vývojovém cyklu. Stejným způsobem můžeme také generovat protokoly v našem kódu selenu pro testování před a po každé testovací podmínce nebo testovacím prohlášení, abychom zkontrolovali, zda všechny fungují podle očekávání.
log4j Framework
K vygenerování těchto souborů protokolu v kódu selenu používáme rámec log4j poskytovaný Apache. S tímto rámcem můžeme generovat naše přizpůsobené protokoly.
Klepněte na tady ke stažení jar4 log4j z úložiště Maven.
Můžeme generovat protokoly dvěma způsoby:
- Pomocí souboru log4j.properties
- Pomocí souboru log4j.xml
Tyto soubory budou obsahovat konfiguraci o tom, jaký druh protokolů chcete generovat. Můžete použít kterýkoli z nich. Pokud chcete použít obojí, bude mít log4j.xml vyšší prioritu. Preferovaným způsobem generování protokolů je použití souboru vlastností, takže zde prozkoumáme více informací o generování pouze prostřednictvím souboru vlastností.
Implementace log4j
Stáhněte soubor jar4 log4j z výše uvedené cesty a přidejte jej do cesty sestavení projektu. Pokud používáte samostatnou aplikaci Java, vytvořte soubor log4j.properties a přidejte soubor vlastností paralelně ke zdrojové složce.
bezplatné weby pro sdílení souborů ke stažení
Soubor Log4j.properties je konfigurační soubor, který ukládá hodnoty do páru klíč – hodnota.
Obsahuje 3 hlavní komponenty:
- Dřevorubci Zachycuje informace o protokolování.
- Dodatky : Publikujte informace o protokolování do jiného preferovaného cíle, jako jsou konzoly, soubory, zásuvky, protokoly událostí NT atd.
- Rozvržení : Naformátujte informace o protokolování v různých stylech, jako je HTML, rozložení XML atd.
Syntaxe souboru log4j.properties
# 1) Definujte kořenový záznamník pomocí úrovně protokolování INFO a appender X [appender mohou být jakékoli konzoly, soubory, zásuvky, protokoly událostí NT].
log4j.rootLogger = INFO, X
#dva) Nastavit appender s názvem X jako File Appender.
log4j.appender.X = org.apache.log4j.FileAppender
# 3) Definujte rozložení pro X appender.
log4j.appender.X.layout = org.apache.log4j.PatternLayout log4j.appender.X.layout.conversionPattern = %m%n
log4j.properties Příklad
Vytvořte soubor log4j.properties s odkazem na výše uvedenou syntaxi:
# inicializujte kořenový záznamník s úrovní INFO a vytiskněte jej v konzole pomocí stdout a fout.
log4j.rootLogger=INFO,stdout,fout
# přidejte ConsoleAppender do standardního výstupu loggeru, abyste mohli zapisovat do konzoly.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# použijte jednoduchý vzor rozvržení formátu zprávy definovaný jako% m% n, který vytiskne protokolovací zprávy do nového řádku.
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%m%n
# přidejte FileAppender do prostředí loggeru.
log4j.appender.fout=org.apache.log4j.FileAppender
# Soubor appender je definován jako org.apache.log4j.FileAppender. Zapíše do souboru s názvem SoftwareTestingHelp.
log4j.appender.fout.File=SoftwareTestingHelp.log
# použijte podrobnější vzor zprávy.
log4j.appender.fout.layout=org.apache.log4j.PatternLayout log4j.appender.fout.layout.ConversionPattern=%p %d{ISO8601} %r %c [%t] %m%n
Různé úrovně protokolování
- LADIT
- INFO
- VAROVAT
- CHYBA
- FATÁLNÍ
Každá úroveň má svou vlastní prioritu. Předpokládejme, že pokud použijeme úroveň „DEBUG“, bude protokolovat všechny zprávy na úrovni jako INFO >> VAROVÁNÍ >> CHYBA >> FATÁLNÍ.
Předpokládejme, že pokud použijeme úroveň „CHYBA“, bude ignorovat DEBUG >> INFO >> VAROVAT a bude protokolovat pouze CHYBU >> FATÁLNÍ.
Ve všech těchto úrovních musíme definovat v našem souboru vlastností. Protokoly budou generovány v závislosti na naší konfiguraci.
Implementace protokolů pro stejný výše uvedený příklad:
Krok 1: Vytvořte objekt pro třídu Logger.
final static Logger logger = Logger.getLogger(Frame.class);
Výše uvedená metoda pomáhá získat objekt loggeru. Tato metoda vezme jako argument buď třídu, nebo název třídy. Pomocí tohoto objektu protokolovacího nástroje můžete generovat přizpůsobené protokoly.
V tomto příkladu jsme odkazovali na apache log4j framework, pokud používáte framework TestNG, musíte použít třídu protokolu TestNG.
Zde jsme se pokusili vygenerovat protokol bez implementace souboru vlastností.
V konzole ani v vytvořeném souboru protokolu nejsou generovány žádné protokoly. V konzole došlo k chybě, protože soubor protokolu není správně implementován. K jeho implementaci musíme použít třídu - PropertyConfigurator. Postupujte podle kroku 2.
Krok 2: Inicializujte soubor Konfigurátor vlastností a předejte argument jako název souboru vlastností log4j.
PropertyConfigurator.configure („log4j.properties“);
Kompletní kód pro generování souboru protokolu:
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'); } }
Soubor vlastností:
Závěr
V aktuálním výukovém programu jsme se zaměřili na technické důsledky při implementaci protokolování v rámci. K implementaci protokolování jsme využili nástroj log4j. Diskutovali jsme o základních komponentách, které tvoří log4j z hlediska použitelnosti. S Appenders and layouts, the user is leveraged to choose the desired logging format / pattern and the data source / location.
V tomto kurzu prozkoumáme, proč se protokoly používají v našem testovaném a pokrytém rámci log4j a implementace rámce log4j v Selenium pro generování protokolů.
Další výuka # 27 : V nadcházejícím tutoriálu bychom diskutovali o některých pokročilejších tématech souvisejících s efektivní skriptování a řešení scénářů kde je uživatel povinen zpracovávat události myši a klávesnice. Kromě toho bychom také diskutovali o tom, jak uložit více než jeden webový prvek do seznamu.
Doporučené čtení
- Výukové programy pro zatmění do hloubky pro začátečníky
- Úvod do selenu WebDriver - Selenium Tutorial # 8
- Efektivní scénáře selenu a řešení potíží - Scénář selenu č. 27
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- 30+ nejlepších návodů na selen: Naučte se selen se skutečnými příklady
- Jak najít prvky v prohlížečích Chrome a IE pro vytváření skriptů selenu - výuka selenu č. 7
- Implementace našeho prvního skriptu WebDriver - výuka selenu WebDriver # 10
- Úplné nastavení a instalace WebDriveru s Eclipse - výuka selenu č. 9