2013-01-02

How to install TestNG in Eclipse?

In this article we are going to see how to install TestNG in Eclipse IDE to use with selenium webdriver. I am using j2ee with Eclipse (Indigo Service Release 2).

For the basic webdriver and Eclipse IDE setup, please follow my old post .

Please go through following steps to setup TestNG in eclipse

Step 1 : Run Eclipse and Click "Help"


Step 2 : Click "Install New Software"

Step 3 : Click "Add" from right upper side
 

Step 4 : Write "TestNG" as Name and "http://beust.com/eclipse" as Location

Step 5 : Click Ok and you see TestNG loaded. Select that check box  and press next
 

Step 6 : Complete the installation process by accepting , allowing terms & conditions . In the last point Eclipse will download and install total package. It will then prompt for restarting Eclipse. Restart Eclipse.

We have completed installation. Now let's check.
- Click Window -> Show View -> Others

We will get a view selecting window.

Select TestNG under Java and Click ok. We can see there is another view added in the bottom(my preference) of the eclipse.


To Run a project as TestNG project, we can get another option from Run -> Run As -> "TestNG Test".
 

Now We are ready to run our selenium test with TestNG. 

Why we need TestNG instead of JUnit. The main advantages for using TestNG are
- All major JAVA IDEs  EclipseIntelliJ IDEA, and NetBeans support TestNG.
- TestNG can be integrated in Apache Maven build system with custom tasks for Apache Ant (Selenium test can be run on nighty builds)
Continuous Integration using Hudson has built in support for TestNG.
There are more at TestNG website.

In separate post, I will write how to write code for TestNG in selenium web driver. 
...Thanks...:) 

2012-12-31

How to take a screenshot in selenium webdriver?

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

[Test]
public void TestHome()
{
driver.Navigate().GoToUrl(path);
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
-myScreen.AsByteArray
We can use it to get the value of the screenshot image as an array of bytes.

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

....Thanks...:)...