Selenium Test Otomasyonunda Ekran Görüntüsü Alma(.Net — XUnit)

AvsarYagmur
2 min readMar 10, 2023

--

Herkese Merhaba,

Bu serinin son yazısı olan selenium otomasyonu ile koştuğumuz testlerin ekran görüntüsünü alma işlemini adım adım anlatacağım. Tüm seriyi sırasıyla uygulayarak ilk otomasyon projenizi hayata geçirebilirsiniz. :)

Testler .Net Framework ve XUnit test aracı kullanılarak yazılmıştır.

Seriye kısa yoldan ulaşmanız için kisa linklerini ekliyorum:

Kurulum

Web sitesi üzerinden UI elementleri bulma

Senaryo Yazımı Hazırlık Süreci

Başarılı ve Başarısız Login Test Senaryosu Yazma

Ekran görüntüsü almak için gerekenler:

  • Property bilgilerinin tuttulduğu bir Config sınıfı
  • Ekran görüntülerini kaydedildiği bir klasör
  • Ekran görüntüsü almayı sağlayacak method
  1. Projeye ilk olarak bir Config sınıfı eklenir. Bu sınıf içerisine projede kullanılacak URL’ler ve ekran görüntülerinin kaydedildiği dosya uzantısı eklenmelidir.
Config
public static class Config
{
public static string TestUrl = "http://test.com/";
public static string OtomasyonScreenshotDirectory = AppDomain.CurrentDomain.BaseDirectory + @"\OtomasyonScreenShots";//Projenin bulunduğu dosya yolunun altına yeni bir klasör yolu ekler.

}

2. Projede okunabilirliği sağlamak için sıklıkla kullanılan methodların “BaseAction” isimli sınıf içerisinde toplanması faydalı olacaktır.

Proje içerisinde, Config sınıfında belirtilen dosya uzantısı yoksa oluşturmasını sağlayan methodu(CreateScreenShotDirectory) ekledim.

public static void CreateScreenShotDirectory()
{
if (!Directory.Exists(Config.OtomasyonScreenshotDirectory))
{
Directory.CreateDirectory(Config.OtomasyonScreenshotDirectory);
}
}

3. Artık elimde testler koşulduğu sırada ekran görüntülerinin kaydedileceği dosya uzantısı bulunuyor. Şimdi ekran görüntüsünü alacak methodu yazacağım. Bu method da çoğu test içerisinde kullanılacağından “BaseAction” sınıfı içerisinde oluşturulabilir.

public static void TakeScreenshot(string screenshotFileName, IWebDriver driver)
{
Screenshot screenshot = ((ITakesScreenshot)driver).GetScreenshot();
screenshot.SaveAsFile(AppDomain.CurrentDomain.BaseDirectory + @"\OtomasyonScreenShots\" + screenshotFileName + ".png", ScreenshotImageFormat.Png);
}
BaseAction

4. İlgili test içerisine TakeScreenshot methodu eklenerek otomasyonun ekran görüntüsü alması sağlanacaktır.

[Fact]
public void TestCase()
{
/* Gerekli test case için kontrol tıklama vb işlemler burada yapıldı Daha sonra da case sonunda ekran görüntüsü alındı.*/
BaseActions.TakeScreenshot("TestCase1SS", Driver);



}
Ekran görüntüsü alma

Bu 4 islemi sırasıyla yaptıktan sonra artık ekran görüntüsü alabilen başarılı ve başarısız login senaryolarının bulunduğu bir otomasyon projesine sahibiz. Projenin son halini githuba ekledim. Ulaşmak için: https://github.com/avsaryagmur/MediumTestOtomasyon

Umarım size yardımcı olabilmişimdir.

Sağlıcakla kalın…

--

--