In Following article we are going to see how to take screenshot in selenium webdriver. I am using c# with VS2010.

Screenshot is a very important factor while testing in selenium. When ever any important functions need to be tested, we should take screenshot after testing . We may use this to take  screenshot after fail a test case or, to validate a test from previous reference or, to keep log of test results. lets start.
[Please follow my introductory selenium setup post to know about the basic selenium setup.]

Step 1 : After initializing driver , make a screenshot type variable (myScreen).

private Screenshot myScreen;

Step 2 : In the test method, After a test, assign myScreen by Casting the driver with ITakesScreenshot interface and call GetScreenshot()
myScreen = ((ITakesScreenshot)driver).GetScreenshot();

Step 3: Save the screenshot that we have taken.
myScreen.SaveAsFile(@"F:\ShantonuTest.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

So, For better understanding , I am pasting my full test code here

public void TestHome()
Assert.AreEqual("Software Development Outsourcing. Offshore Software Development Company - Kaz Software", driver.Title);
myScreen = ((ITakesScreenshot)driver).GetScreenshot();
myScreen.SaveAsFile(@"F:\ShantonuTest.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
Note : We can skip step1, 2 and 3 by doing all together inside the test method.
 ((ITakesScreenshot) driver).GetScreenshot().SaveAsFile(@"F:\ShantonuTest.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

After the test method execution, my screenshot was found in f:\

In here we have used the

1. GetScreenshot() - takes no parameter but returns a OpenQA.Selenium.Screenshot object containing the image.

2. SaveAsFile("FullPathWithFileName", [System.Drawing.Imaging.ImageFormat object indicating file format]) -Takes two parameter but gives no output.

A Screenshot type object(myScreen from step 1) have extra following property
We can use it to get the value of the screenshot image as an array of bytes.

We can use it to get current System.Object as String (System.String type)