Selenium ile Apache Log4j Kullanımı

Merhaba arkadaşlar, bu yazımda bir loglama servisi olan Apache Log4j kütüphanesini Selenium WebDriver ile nasıl kullanılacağını anlatacağım.

Apache Log4j Nedir ?

Log4j, Apache Software Foundation tarafından 1996 yılında java ile geliştirilmiş open source bir loglama servisidir. Log4j kullanmak için jar dosyası ve log4j tanımlarının yapıldığı properties dosyasına ihtiyaç duyulmaktadır. Log4j seviye bazlı loglama yapabilmektedir. Trace seviyesinden Fatal seviyesine doğru gidildikçe log kapsamı da artacaktır. Bu seviye log4j.properties dosyasından ayarlanabilir. Bu seviyeler aşağıdaki görselde gösterilmiştir.

Log4j Log Seviyeleri

Test Projesinin Oluşturulması

IntelliJ IDEA ile bir MAVEN projesi oluşturdum. POM.xml dosyasına Log4j, Selenium ve TestNG kütüphanelerine ait repository bilgilerini ekledim. POM.xml dosyasının son hali aşağıdaki gibidir. Maven dışında bir projede kullanmak isterseniz jar uzantılı kütüphane dosyasına buradan ulaşabilirsiniz.

pom.xml

Log ayarlarını yapabilmek için src/main/resources dizinine log4j.properties adında dosya ekledim. Dosyanın son hali aşağıdaki gibidir. rootLogger= ALL komutu ile tüm loglar seviyeye bakılmaksızın açılmış olacaktır. log4j.appender.file.File=${user.dir}/Logs/test-project.log komutu ile otomatik olarak Logs adında bir klasör oluşacak ve projemizin logları test-project.log dosyasına yazılmaya başlanacaktır.

# logger options: ALL -> DEBUG -> INFO -> WARN -> ERROR -> FATAL -> OFF
# Root logger option
log4j.rootLogger=ALL, file, stdout
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
#log4j.appender.file.File=C:\\logging.log
log4j.appender.file.File=${user.dir}/Logs/test-project.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

LoginPageTest Sınıfının Eklenmesi

Test kodlarımızı yazacağımız sınıf olan LoginPageTest sınıfını test package altına oluşturdum. Bu sınıfta basit bir oturum açma senaryosuna ait test kodları yer almaktadır. final static Logger logger = Logger.getLogger(LoginPageTest.class); komutu ile logger sınıfını kullanarak LoginPageTest sınıfındaki işlemleri loglayabilirim.

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import org.apache.log4j.Logger;
import java.util.concurrent.TimeUnit;
public class LoginPageTest {
    private WebDriver driver;
    final static Logger logger = Logger.getLogger(LoginPageTest.class);
    private static String url = "https://demo.yasinalbakir.net";
    @BeforeTest
    public void setUp() {
        logger.info("Test başlatıldı.");
        System.setProperty("webdriver.chrome.driver", "C:/selenium-driver/chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
    }
    @Test
    public void loginTest() {
        driver.navigate().to(url);
        logger.info("Test Edilecek Sayfa : " + driver.getTitle());
        driver.findElement(By.id("kullaniciAdi")).sendKeys("admin");
        driver.findElement(By.id("parola")).sendKeys("123456");
        driver.findElement(By.id("btnGirisYap")).click();
        logger.info("Yönlendirilen Sayfa : " + driver.getTitle());
        String actResult = "Kullanıcı Tanımlama";
        Assert.assertEquals(actResult, driver.getTitle());
    }
    @AfterTest
    public void tearDown() {
        driver.quit();
        logger.info("Test tamamlandı.");
    }
}

Testi çalıştırdıktan sonra oluşan test-project.log dosyasına ait görüntü de aşağıdaki gibidir.

Test Sonucu

Faydalı olması dileğiyle.