Prilikom izvršavanja auto testa često sam bio u situaciji da mi je potreban screenshot aplikacije. Razloga za to može biti više, ali najčešći razlog jeste potreba da se uhvati trenutak u kome je test pao kako bi se lakše utvrdio uzrok.
Pored toga neke stvari je neophodno testirati, ali samo testiranje nije moguće u potpunosti automatizovati. Na primer, potrebno je testirati da li je layout ili uopšte neki vizuelni aspekt aplikacije korektan.
Koji god razlog da je, pomouću Selenium 2 WebDriver-a moguće je napraviti screenshot internet pretraživača na vrlo jednostavan način.
Primer koji sledi prikazuje kako se može uhvatiti screenshot ukoliko test padne:
[TestClass] public class MyTests { public TestContext TestContext { get; set; } public IWebDriver Driver { get; private set; } /// <summary> /// Test initialize /// </summary> /// <remarks>This method is run before each Test</remarks> [TestInitialize] public void TestInitialize() { Driver = new FirefoxDriver(); } /// <summary> /// Test cleanup /// </summary> /// <remarks>This method is run after each Test</remarks> [TestCleanup] public void TestCleanup() { var screenShotDriver = Driver as ITakesScreenshot; if (screenShotDriver == null) return; // Make filename unique in case this is a cleanup for data-driven test ;) var filename = string.Format("screenshot-{0}.png", DateTime.Now.Ticks); var fullFilename = Path.Combine(TestContext.ResultsDirectory, filename); var screenShot = screenShotDriver.GetScreenshot(); screenShot.SaveAsFile(fullFilename, ImageFormat.Png); TestContext.AddResultFile(fullFilename); Driver.Quit(); } [TestMethod] public void ScreenshotTest() { Assert.Fail("I just want to take a screenshot!"); } }