Merhaba arkadaşlar, bu yazıda .Net projesinde ekran görüntüsü nasıl alırız kısaca bu konuya değinmek istiyorum. Test her bittiğinde ekran görüntüsü alınsın istiyorsak TearDown da TakeScreenshot metotunu çağırmamız yeterli.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[TearDown] public void CleanUp() { //Hata alınan sayfasının ekran görüntüsünü alıyoruz var screenshot = Driver.TakeScreenshot(); // dosyayı kayıt edeceğimiz yol ve isimi belirliyoruz DateTime time = DateTime.Now; string dateTime = time.ToString("hhmmssddmmyyyy"); var filePath = ImagePath + "\\" + capabilities.BrowserName + " -RegresyonTest-" + dateTime + ".png"; //dosyayı belirlediğimiz isimle belirtiğimiz klasöre kayıt ediyoruz screenshot.SaveAsFile(filePath, ScreenshotImageFormat.Png); Driver.Quit(); } |
Eğer sadece hata durumunda ekran görüntüsü almak istiyorsak biraz daha uğraşmamız gerekiyor.
1- Öncelikle hatayı yakalayıp istediğimiz işlemi yapabilmek için bir metot yazmamız gerekecek.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
protected void CachException(Action action) { try { action(); } catch (Exception ex) { var screenshot = Driver.TakeScreenshot(); DateTime time = DateTime.Now; string dateTime = time.ToString("hhmmssddmmyyyy"); var filePath = FailImagePath + "\\" + browser + " -RegresyonTest-" + dateTime + ".png"; screenshot.SaveAsFile(filePath, ScreenshotImageFormat.Png); log.Fatal("Hata "+ex.Message+" ekran görüntüsü alındı "+filePath); throw; } } |
2 -Test adımlarımızı bu metota gönderdiğimiz hata aldığımız her durumda ekran görüntüsü alabiliriz. Eğer hata durumlarında başka işlem yapmak isterseniz yine bu yöntemi kullanabilirsiniz. Örnek olarak ben hata durumunda log tutuğum için onu da bu metotun içinde tanımlamıştım.
1 2 3 4 5 6 7 8 9 10 |
[Test] public void AccountLopginPage() { CachException(() => { var loginPage = new LoginPage(Driver); loginPage.AssertHomePageLoaded() .ScanLoginPage(); }); } |
Safari de hiç denemedim onun dışında Chrome, Edge, FireFox ve IE’de bu şekilde ekran görüntüsü alabilirsiniz. İşte bu kadar artık test koşarken herhangi bir hata alırsak hatanın alındığı sayfanın o anki halini belirlediğimiz isimle istediğimiz bir yere kayıt edebiliriz.
Örnek ekran görüntüsü
Not: sayfamızda böyle bir hata yok hata almak için linkle oynadım yoksa bizden canlıya hata kaçmaz 🙂