Execute Automation

With C#

Advanced Selenium automation with C# (Taking screenshot)

Taking screenshot: 

Screenshots are very important part in test execution which shows evidence of test result. Selenium Webdriver supports an interface called ITakesScreenshot with GetScreenshot() method to help us take a screenshot simply. To take a screenshot, we use bellow steps:

  • Get folder location where screenshot will be saved in.
  • Check whether the folder exists or not. A new folder should be created if folder does not exist.
  • Create a name for a screenshot with a format: filename+ created day. (easy to find and manage screenshots).
  • Take  screenshot using GetScreenshot() method.
  • Save screenshot to the location above.

After having a take screenshot method, we can call it whenever we want to save an evidence for test execution.

Here is the code Take screenshot (C#) example:

 // Save screenshot
 public static void SaveScreenShot(IWebDriver driver, string fileName)
 {
 
 // Get folder location 
 var folderLocation = Global.Base.screenShotPath;
 try
 {
 ////check whether folder is existed or not
 // if folder is not existed => create new folder
 if (!Directory.Exists(folderLocation))
 {
 Directory.CreateDirectory(folderLocation);
 }
 else
 {
 // create file name (format: filename+ created day)
 var fileSavedName = new StringBuilder(folderLocation);
 fileSavedName.Append(@"\").Append(fileName);
 fileSavedName.Append(DateTime.Now.ToString("_dd-MM-yyyy_hh-mm-ss-tt"));

 // take screenshot
 var screenShot = ((ITakesScreenshot)driver).GetScreenshot();
 // save screenshot
 screenShot.SaveAsFile(fileSavedName.Append(".").Append(ScreenshotImageFormat.Gif).ToString(), ScreenshotImageFormat.Gif);
 
 }
 }
 catch (Exception e)
 {
 Console.WriteLine("An error occurred: '{0}'", e);
 } 

 }

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *