Selenium Test Otomasyonunda Ekran Görüntüsü Alma(.Net — XUnit)
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:
Web sitesi üzerinden UI elementleri bulma
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
- 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.
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);
}
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);
}
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…