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.)