C# Selenium ile Ekran Görüntüsü Alma

Merhaba arkadaşlar, bu yazımda Selenium ile ekran görüntüsü almayı anlatacağım. C# NUnit ile Selenium Web Driver POM Kullanımı makalesinde kullandığımız kodların üzerine bu yeni özelliği ekliyor olacağım.

Hata anında alacağımız ekran görüntülerini kaydetmek için bin / Debug klasörünün altına ScreenShots adında bir klasör oluşturdum. Eğer bin / Debug klasörünü Solution Explorer menüsü altında göremiyorsanız Show All Files (ALT + P + O) seçeneğine tıklayın.

Solution Explorer / ScreenShots
Solution Explorer

Hata anında ekran görüntüsü alabilmek için BaseTest.cs sınıfına TakeErrorScreenShot adında bir method oluşturdum. Method’a ait kodlar aşağıdaki gibidir:

public void TakeErrorScreenShot()
        {
            try
            {
                // Test senaryosunun başarı durumu testResult değişkenine atandı.
                var testResult = TestContext.CurrentContext.Result.Outcome.Status;

                // Başarı durumu Failed olduğunda yani hata anında aşağıdaki döngüye girer.
                if (testResult.ToString() == "Failed")
                {
                    // Alınan ekran görüntüsünün kaydedilmesi için dosya yolu ayarlandı.
                    var path = AppDomain.CurrentDomain.BaseDirectory + "ScreenShots\\" + webDriver.Title + "-" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".png";

                    //Ekran görüntüsü alındı ve belirtilen dosyanın içine atıldı.
                    ((ITakesScreenshot)webDriver).GetScreenshot().SaveAsFile(path, ScreenshotImageFormat.Png);
                }
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex.Message);
            }
        }

TestContext.CurrentContext.Result.Outcome.Status; komutu ile çalıştırılan test senaryosunun durumu (Passed, Failed) alındı. Test senaryosunun durum bilgisi Failed olarak geldiğinde yani hata anında ekran görüntüsü almak için ilgili kod bloğu çalıştırıldı.

Alınan ekran görüntüsü test edilen sayfanın başlık bilgisi + tarih bilgisi ile beraber .png formatında ScreenShots klasörüne alındı.

Ekran görüntüsünü test bittiğinde almak için BaseTest sınıfında yer alan [TearDown] etiketininin içerisinde TakeErrorScreenShot methodunu çağırdım.

[TearDown]
        public void Close()
        {
            TakeErrorScreenShot();
            webDriver.Quit();
        }

Ekran görüntüsü alabilmek için test edilen sayfanın linkini hatalı girdim. Test Explorer menüsünden ilgili test senaryosunu çalıştırdığımda ScreenShots klasörüne ekran görüntüsünü aldığını gördüm.

Solution Explorer / ScreenShots
Solution Explorer / ScreenShots Folder
Bin / Debug / ScreenShots klasörü
ScreenShots Folder

Alınan ekran görüntüsü ise aşağıdaki gibidir:

Hata Durumunda Alınan Ekran Görüntüsü
Ekran Görüntüsü

Faydalı olması dileğiyle…