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);
}
}
Basic Selenium Webdriver automation practice with C# Advanced Selenium automation with C# (Data driven testing using Excel.)