debugging selenium scripts with logs selenium tutorial 26
Şimdi en kapsamlı hizmetimizin sonuna doğru ilerliyoruz Selenyum Test aracı için Ücretsiz Eğitimler . Şimdi yayınladığımız eğitimler, gelişmiş Selenium eğitiminin bir parçasıdır.
Önceki eğitimde, odak noktamızı Hudson olarak adlandırılan Sürekli Entegrasyon aracı . Ücretsiz bir araçtır ve test projesini oluşturmak, test sınıflarını uzaktan yürütmek ve paydaşlara başarılı ve başarısız test durumları ile ilgili uygulama durumu hakkında bilgi veren bir bildirim e-postası göndermek için çok daha fazla özelliğe sahiptir.
Mevcut eğiticide, doğrudan veya dolaylı olarak yardımcı olacak bazı gelişmiş kavramlara yöneleceğiz. Otomasyon çerçevesini optimize etmek ve kullanıcılara daha fazla görünürlük sağlar.
Bu nedenle, mevcut eğitimde, günlük özelliği, potansiyeli, hata ayıklama yetenekleri ve daha fazlası.
c # cevaplı mülakat soruları
Bazen günlüğe kaydetme, mevcut komut dosyası oluşturma mekanizmasının ek yükü olarak kabul edilir, ancak uzmanlar, aşağıdaki avantajlardan dolayı doğru oranda kullanıldığında en iyi uygulamalardan biri olarak kabul edilir:
Selenium Komut Dosyalarında Oturum Açmanın Avantajları:
- Test süitlerinin yürütülmesine ilişkin eksiksiz bir anlayış sağlar
- Günlük mesajları, yürütme sonrası inceleme için harici dosyalarda saklanabilir
- Günlükler, program yürütme sorunlarının ve hatalarının ayıklanmasında olağanüstü bir yardımcıdır
- Paydaşlar tarafından uygulamanın sağlığını belirlemek için günlükler de incelenebilir
Ne öğreneceksin:
Log4j - Java tabanlı Günlük API'si
Günlüğe kaydetmeyle ilgili teknik ayrıntılara geçersek, uygulama boyunca kullanacağımız API'nin kökenini tartışalım. log4j öğreticisi günlükler oluşturmak için. Log4j, Secure Electronic Marketplace for Europe'daki kişilerin günlükleri oluşturmamıza yardımcı olacak bir yardımcı program geliştirme konusundaki işbirlikçi çabalarının bir sonucuydu ve bu nedenle log4j 1996 yılında ilgi odağı haline geldi. Log4j, açık kaynaklı bir araçtır ve IBM Kamu Lisansı altında lisanslanmıştır.
Log4j'nin uygulanmasını oluşturan üç ana bileşen vardır. Bu bileşenler, günlük seviyesi, işlenecekleri günlük mesajı formatları ve kaydetme mekanizmaları hakkındaki ayrıntıları temsil eder.
Log4j Bileşenleri
- Kaydediciler
- Ekler
- Düzenler
# 1) Kaydediciler
Projede logger uygulamak için aşağıdaki adımların yapılması gerekir.
Aşama 1 : Logger sınıfının bir örneğini oluşturma
Adım 2 : Günlük seviyesini tanımlama
Logger Sınıfı - Log4j'yi kullanabilmemiz için tüm jenerik yöntemleri halihazırda uygulayan java tabanlı bir yardımcı programdır.
Günlük seviyeleri - Günlük seviyeleri, yaygın olarak yazdırma yöntemleri olarak bilinir. Bunlar, günlük mesajlarını yazdırmak için kullanılır. Öncelikle beş çeşit günlük seviyesi vardır.
- hata()
- uyar ()
- bilgi()
- hata ayıklama ()
- günlük ()
Bu nedenle, günlükleri oluşturabilmek için tek yapmamız gereken, herhangi bir yazdırma yöntemini logger örneği üzerinden çağırmaktır. Uygulama aşamasında daha geniş bir şekilde inceleyeceğiz.
# 2) Ekler
Artık bu günlükleri nasıl oluşturacağımızı bildiğimize göre, aklımıza gelmesi gereken bir sonraki şey, günlükleri nereden görüntüleyeceğim? Bu sorunun cevabı 'Ekler' tanımında yatmaktadır.
Ekler, günlüklerin oluşturulması gereken veri kaynağını / ortamını belirtmek için tutarlı bir şekilde kullanılır. Veri kaynaklarının kapsamı, konsol, GUI, metin dosyaları vb. Gibi çeşitli harici ortamlardan uzanır.
# 3) Düzenler
Zaman zaman, kullanıcı belirli bilgilerin her bir günlük ifadesinin başına veya sonuna eklenmesini ister. Örneğin, log ifademle birlikte bir zaman damgası yazdırmak istiyorum. Böylece, bu tür gereksinimler 'Yerleşimler' ile yerine getirilebilir.
Düzenler, kullanıcının günlüklerin işleneceği istenen biçimi seçmesine olanak tanıyan bir yardımcı programdır. Ekler ve Yerleşim, aralarında sıkı bir bağlantıya sahiptir. Bu nedenle, eklerin her birini belirli bir düzen ile eşleştirmemiz gerekir.
Her harita farklı bir düzene sahip birden çok ekleyici tanımlamak için kullanıcının yararlanıldığını not edin.
Artık log4j ve bileşenlerinin temellerinin farkına vardığımıza göre, uygulama olgusuna odaklanacağız.
Tüm uygulama sürecini adım adım anlayalım.
Kurulum / Kurulum
Kurulum ve kurulum için, bu serinin önceki oturumlarında zaten oluşturduğumuz 'Learning_Selenium' projesini düşünüyor olacaktık.
Aşama 1 : İlk ve en önemli adım, log4j API'si için en son jar dosyasını indirmektir. Kavanoz, resmi dağıtım web sitesinde kolayca bulunabilir - ' http://logging.apache.org/log4j/1.2/download.html ”.
Adım 2 : Sonraki adım, derleme yolunu yapılandırmak ve log4j.jar'ı harici bir kitaplık olarak sağlamaktır.
Uygulama
Log4j kullanarak günlük kaydı iki şekilde uygulanabilir ve yapılandırılabilir:
- Komut dosyası aracılığıyla programlı olarak
- Yapılandırma dosyalarıyla manuel olarak
Yukarıda bahsedilen konfigürasyon yöntemlerinin her ikisi de haklara olduğu kadar dezavantajlara da sahiptir. Bu eğitim için, log4j'yi, kolaylığına ve basitliğine bağlı olarak Yapılandırma dosyaları aracılığıyla manuel olarak yapılandırmayı düşünürüz. Yapılandırma dosyası, log4j ile ilgili yapıları yapılandırmak için başka bir XML dosyasıdır.
Log4j.xml dosyasının oluşturulması
Aşama 1 . Bir log4j.xml dosyası oluşturun. Aşağıdaki kodu kopyalayıp yapılandırma dosyasına yapıştırın.
Yapılandırma Dosyasının İzlenecek Yolu
consoleAppender
Konsol ekleyici, konsoldaki günlük ifadelerini yazdırmak için kullanılır.
dosya ekleyici
Dosya ekleyici, günlük ifadelerini harici bir dosya içinde yazdırmak için kullanılır. Kullanıcı, eklenen etiket için sisteme önceden oluşturulmuş olana ifadeler eklemesini ve bunları kaydetmesini veya önceden oluşturulmuş günlüklerin üzerine yazmasını ve yeni günlükleri tamamen oluşturmasını söyleyen bir açma ve kapama değeri ayarlamak için kullanılır.
'append' value= 'false' />
Dosya parametresinin değeri, sisteme söz konusu konumda beklenen günlük dosyasını yaratması için bildirimde bulunmak üzere belirli bir konuma ayarlanır. Ayrıca değer parametresi içinde günlük dosyası adını da belirtiyoruz.
Yerleşim
Bu eğiticinin ilk bölümlerinde tartışıldığı gibi, düzenler, günlük ifadeleri için oluşturma mekanizmasını belirtmek için kullanılır. Log4j, çeşitli düzen modelleri sağlar. Kullanıcı, ConversionPattern parametresinin değerinde istenen modeli belirtmek için kullanılır.
Yukarıdaki düzenin çıktısı aşağıdaki gibi olmalıdır:
01-07-2014 12:56:32 INFO [GmailLogin]: Örnek günlük mesajı
Yukarıdaki çıktıda:
- İlk alan - yürütme tarihi
- İkinci alan - Test adımının yürütüldüğü ss: dd: ss cinsinden tam süre
- Üçüncü alan - Günlük düzeylerinden biri
- Dördüncü alan - Test sınıfının adı
- Beşinci alan - Günlük mesajı
Adım 2 . Log4j.XML dosyasının oluşturulmasını bitirir bitirmez, sonraki adım log4j.XML dosyasını projenin kök klasörüne / temel dizinine koymaktır.
Program düzeyinde Uygulama
Aşama 3 : Sonraki adım, log4j.xml dosyasını yapılandırmak ve ayrıştırmak için yapılandırıcılardan herhangi birini kullanmaktır.
Sözdizimi:
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); } } }
Not : Günlükler, Test paketi seviyesi yerine sınıf seviyesinde de uygulanabilir. Tek yapmanız gereken, test paketi yerine test sınıfında gerekli değişiklikleri yapmaktır.
4. adım : Bir sonraki adım, proje altında bir test sınıfı “GmailLogin.java” oluşturmaktır. Gmail oturum açma işlevini sınıfta uygulayın.
Adım 5 : Sonraki adım, günlük ifadelerini uygulayabilmek için günlükçü sınıfını içe aktarmaktır.
Sözdizimi:
import org.apache.log4j.Logger;
6. Adım : Süreçteki bir sonraki adım, Logger sınıfının nesnesini somutlaştırmaktır.
Sözdizimi:
// Günlük için nesne başlatma
statik Kütükler günlük Logger.getLogger (Demo. sınıf .getName ());
7. Adım : Yukarıda oluşturulan Logger türü günlük değişkeni, günlük ifadelerini oluşturmak için tüm test sınıfı boyunca kullanılacaktır. Aynı için aşağıdaki koda bakın.
Sözdizimi:
@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.'); } }
Günlük dosyasındaki sonuç
01-07-2014 12:56:11 BİLGİ [GmailLogin]: Dosyayı Sisteme yükledi: FileExample.txt
01-07-2014 12:56:11 BİLGİ [GmailLogin]: Değişiklikleri gönderme
01-07-2014 12:56:15 HATA [GmailLogin]: Başarısız Giriş.
Mart 2020'de GÜNCELLEME
Kütükler
Günlük, yaptığımız her işlem için kaydettiğimiz veya oluşturduğumuz bir mesajdır. Neyin doğru neyin yanlış gittiğini kontrol etmek için günlükleri analiz edebiliriz. Varsayalım ki, herhangi bir sistem aniden kapanırsa, o zaman günlükleri analiz ederek, hatanın temel nedenine ulaşabiliriz.
Böylece her geliştirme döngüsünde günlükler oluşturulur. Aynı şekilde, Selenium kodumuzda, hepsinin beklendiği gibi çalışıp çalışmadığını kontrol etmek için her test koşulundan veya test ifadesinden önce ve sonra test etmek için günlükler oluşturabiliriz.
log4j Çerçevesi
Bu günlük dosyalarını Selenium kodunda oluşturmak için Apache tarafından sağlanan log4j çerçevesini kullanıyoruz. Bu çerçeve ile özelleştirilmiş günlüklerimizi oluşturabiliriz.
Tıklayın İşte Maven deposundan log4j jar dosyasını indirmek için.
Günlükleri 2 şekilde oluşturabiliriz:
- Log4j.properties dosyasını kullanma
- Log4j.xml dosyasını kullanma
Bu dosyalar, ne tür günlükler oluşturmak istediğinizle ilgili yapılandırmayı içerecektir. Bunlardan herhangi birini kullanabilirsiniz. Her ikisini de kullanmak isterseniz, log4j.xml'ye daha yüksek öncelik verilecektir. Günlükleri oluşturmanın tercih edilen yolu, özellikler dosyasını kullanmaktır, bu nedenle burada yalnızca özellikler dosyası aracılığıyla oluşturma hakkında daha fazla şey keşfedeceğiz.
Log4j Uygulaması
Log4j jar dosyasını yukarıdaki yoldan indirin ve proje oluşturma yolunuza ekleyin. Log4j.properties dosyası oluşturun ve bağımsız java uygulamasını kullanırken özellikler dosyasını kaynak klasörünüze paralel olarak ekleyin.
Log4j.properties dosyası, değerleri anahtar / değer çiftinde depolayan bir yapılandırma dosyasıdır.
3 ana bileşen içerir:
- Kaydediciler: Günlük bilgilerini yakalar.
- Ekler : Günlük bilgilerini konsollar, dosyalar, soketler, NT olay günlükleri gibi farklı bir tercih edilen hedefte yayınlayın.
- Düzenler : Günlük bilgilerini HTML, XML Düzeni vb. Gibi farklı stillerde biçimlendirin.
Log4j.properties Dosyasının Sözdizimi
# 1) Kök kaydediciyi günlük kaydı seviyesi BİLGİSİ ve ekleyici X ile tanımlayın [ekleyici, herhangi bir konsol, dosya, soket, NT olay günlüğü olabilir].
log4j.rootLogger = INFO, X
#iki) X adlı ekleyiciyi Dosya Ekleyici olarak ayarlayın.
log4j.appender.X = org.apache.log4j.FileAppender
# 3) X ekleyici için düzeni tanımlayın.
log4j.appender.X.layout = org.apache.log4j.PatternLayout log4j.appender.X.layout.conversionPattern = %m%n
log4j.properties Örnek
Yukarıdaki sözdizimine bakarak bir log4j.properties dosyası oluşturun:
# root logger'ı level INFO ile başlatın ve stdout ve fout kullanarak konsolda yazdırın.
log4j.rootLogger=INFO,stdout,fout
# konsola yazmak için günlükçü stdout'a bir ConsoleAppender ekleyin.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# tanımlı basit bir mesaj formatı düzeni kullanın:% m% n, günlük mesajlarını yeni satırda yazdırır.
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%m%n
# Günlükçüye bir FileAppender ekleyin.
log4j.appender.fout=org.apache.log4j.FileAppender
# Ekleyici FILE, org.apache.log4j.FileAppender olarak tanımlanır. SoftwareTestingHelp adlı bir dosyaya yazar.
log4j.appender.fout.File=SoftwareTestingHelp.log
# Daha ayrıntılı bir mesaj kalıbı kullanın.
log4j.appender.fout.layout=org.apache.log4j.PatternLayout log4j.appender.fout.layout.ConversionPattern=%p %d{ISO8601} %r %c [%t] %m%n
Farklı Günlüğe Kaydetme Düzeyleri
- HATA AYIKLA
- BİLGİ
- UYARI
- HATA
- ÖLÜMCÜL
Her seviyenin kendi önceliği vardır. Diyelim ki 'DEBUG' seviyesini kullanırsak, INFO >> WARN >> ERROR >> FATAL gibi tüm seviye mesajlarını günlüğe kaydedecektir.
Diyelim ki 'HATA' düzeyini kullanırsak, bu durumda DEBUG >> INFO >> WARN'ı yok sayacak ve yalnızca ERROR >> FATAL günlüğünü tutacaktır.
Tüm bu seviyelerde özellikler dosyamızda tanımlamamız gerekir. Yapılandırmamıza bağlı olarak günlükler oluşturulacaktır.
Yukarıda belirtilen aynı örnek için günlüklerin uygulanması:
Aşama 1: Logger sınıfı için bir nesne oluşturun.
final static Logger logger = Logger.getLogger(Frame.class);
Yukarıdaki yöntem, günlükçü nesnesini elde etmeye yardımcı olur. Bu yöntem, ya sınıfı ya da sınıfın adını argüman olarak alacaktır. Bu logger nesnesini kullanarak özelleştirilmiş günlükler oluşturabilirsiniz.
Bu örnekte apache log4j çerçevesine atıfta bulunduk, TestNG çerçevesini kullanıyorsanız TestNG günlük sınıfını kullanmanız gerekir.
Burada, özellikler dosyasını uygulamadan günlük oluşturmaya çalıştık.
Konsolda veya oluşturulan herhangi bir günlük dosyasında herhangi bir günlük oluşturulmaz. Günlük dosyası doğru şekilde uygulanmadığından konsolda bir hata alındı. Bunu uygulamak için - PropertyConfigurator sınıfını kullanmamız gerekir. 2. adımı izleyin.
Adım 2: Özellik Yapılandırıcı dosyasını başlatın ve argümanı log4j özellikler dosyasının adı olarak iletin.
PropertyConfigurator.configure (“log4j.properties”);
Günlük Dosyası Oluşturma için Tam Kod:
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'); } }
Özellikler dosyası:
Sonuç
Mevcut eğiticide, bir çerçevede günlük kaydı uygularken teknik çıkarım. Günlük kaydını uygulamak için log4j yardımcı programını kullandık. Log4j'yi oluşturan temel bileşenleri kullanılabilirlik açısından tartıştık. Ekler ve düzenlerle, kullanıcı, istenen günlük biçimini / modelini ve veri kaynağını / konumunu seçmek için kullanılır.
Bu eğitici yazıda, testimizde neden günlüklerin kullanıldığını ve log4j çerçevesini ele alıyoruz ve günlük oluşturmak için Selenium'da log4j çerçevesinin uygulanmasını inceliyoruz.
Sonraki Eğitim # 27 : Gelecek eğitimde, aşağıdakilerle ilgili daha ileri düzey konuları tartışacağız: verimli komut dosyası oluşturma ve senaryolarda sorun giderme kullanıcının fare ve klavye olaylarını işlemesi gereken yer. Ayrıca, bir listede birden fazla web öğesinin nasıl saklanacağını da tartışacağız.
Önerilen Kaynaklar
- Yeni Başlayanlar İçin Derinlemesine Eclipse Eğiticileri
- Selenium WebDriver'a Giriş - Selenium Eğitimi # 8
- Etkili Selenium Komut Dosyası Oluşturma ve Sorun Giderme Senaryoları - Selenium Eğitimi # 27
- Salatalık Selenium Eğitimi: Salatalık Java Selenium WebDriver Entegrasyonu
- 30+ En İyi Selenyum Öğreticisi: Gerçek Örneklerle Selenyum Öğrenin
- Selenium Komut Dosyaları Oluşturmak İçin Chrome ve IE Tarayıcılarda Öğeler Nasıl Bulunur - Selenium Tutorial # 7
- İlk WebDriver Komut Dosyamızın Uygulanması - Selenium WebDriver Eğitimi # 10
- Eclipse ile WebDriver Tam Kurulum ve Kurulum - Selenium Eğitimi # 9