October 8, 2015

Selenium Integration With Jenkins

In this post i am going to explain how to integrate with continuous integration tool Jenkins..

Here i am trying to run Maven project scripts so

  1. Maven Project with TestNG (you can go through this post  create-sample-maven-project.html)
  2. and few webdriver scripts
  3. Downlaod Maven Project from Here....
Download Jenkins:

1. Navigate ti http://jenkins-ci.org/
2. Download .war file

3. Save the jenkins.war file in any of the location, you need to run this Jenkins.war file.

Set Up Jenkins:

1. Navigate to folder where you kept your jenkis.war
2. type command java -jar jenkins.war and press Enter

3. Will take some time to extract Jenkins, then you will get a success message.
4. By default Jenkins will start in port number 8080
5. For Jenkins UI use this URL in browser http://localhost:8080/

Configure Jenkins:

Before creating any Jenkins job we need to perform some configuration steps.
1. Click on Manage Jenkins link on the left side of the page
2. Click on Configure System.
3. Navigate to JDK section and Click on Add JDK button
4. Uncheck Install automatically check box so Jenkins will only take java which we have mention above
5. Give the name as JAVA_HOME and Specify the JDK path

6. Add Maven. IF you already not downloaded maven, get it from here Download Maven

6. Click on Save button.

Create Jenkins Job:
1. Click on create new Jobs.
2. Enter Job description and select Maven Project
3. Go to Build section and Enter path of POM.xml in ROOT POM text box.
4. Click apply and Save,

Run Job:
Navigate to Home page of Jenkins, there you can see new Job is created. Click on Build now symbol

Maven will build the project. It will then have TestNG execute the test cases
Once the build process is completed, in Jenkins Dashboard click on the Job1 project

October 7, 2015

Log4J Configuration

In this post i will discuss about Log4J and Log files.

Log file is just simple file, which keep track of the record or event or info when any event happens or any software run. This whole process known as logging. We can create log file as simple log file.

Why Log file is required:

We can create log file for our simple script also so we can track or debug our script easily if anything goes wrong in script. For example, if our script is failing at some point then we can track back what went wrong

What is log4J
Log4j is free open source tool  for creating log files It help us to generate log file.

Log4j is very lightweight and simple logging framework, comprising of three main components

Download Log4J jar file.

1. Navigate to http://mvnrepository.com/
2. Search for Log4J
3. Download latest version of log4J

Create a sample Java project and add log4J. jar file to project.

Create a properties file 
Right click on Project --New --File
give a name log4j.properties.
and add below code in that file

Create a Class file with below log levels:

logger.debug("Sample debug message");
logger.info("Sample info message");
logger.warn("Sample warn message");
logger.error("Sample error message");
logger.fatal("Sample fatal message");

Below is the sample code:

After executing test you can see logs in log4j.log file and in console as well.

OUTPUT of Log4J file:

October 2, 2015

September 28, 2015

isDisplayed vs isEnabled

In this post i will  show you the difference between isDisplayed() and isEnabled()


boolean isDisplayed()
Is this element displayed or not? This method avoids the problem of having to parse an element's "style" attribute.
Whether or not the element is displayed

Method used to verify presence of a web element within the webpage. The method is designed to result a Boolean value with each success and failure. The method returns a “true” value if the specified web element is present on the web page and a “false” value if the web element is not present on the web page.


boolean isEnabled()
Is the element currently enabled or not? This will generally return true for everything but disabled input elements.
True if the element is enabled, false otherwise.

Reference :  https://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebElement.html#isEnabled()
Method used to verify if the web element is enabled or disabled within the webpage. Like isDisplayed() method, it is designed to result a Boolean value with each success and failure. The method returns a “true” value if the specified web element is enabled on the web page and a “false” value if the web element is not enabled (state of being disabled) on the web page

After Executing code :

Below is the Code:

September 16, 2015

Selenium Grid Extras

In this post i am going to explain about Selenium Grid Extras.

Selenium Grid Extras :

Simplify the management of the Selenium Grid Nodes and stabilize said nodes by cleaning up the test environment after the build has been completed.

For More information on Selenium Grid Extras you can refer to this link. 


Features of Grid Extras:
  • Ability to control individual grid nodes, following is an incomplete list of OS level tasks:
    • Killing any browser instance by name
    • Stopping any Process by PID
    • Moving mouse to specific location
    • Get Memory usage and disk statistics
  • Automatically upgrade WebDriver binaries
  • Restart node after a set number of test executions
  • Central storage of configurations for all nodes on the HUB server
  • Screenshots at the OS level
  • And much more.

Steps to Install / Configure Selenium Grid Extras:

Download Grid Extras Jar file from Here : Download Selenium-Grid-Extras

Selenium Grid Extras is a project that helps you set up and manage your local Selenium Grid. Typical instances of the Grid consists of the HUB and Nodes. The HUB is responsible for managing test sessions and assigning new session idle nodes.
Setup of Grid Extras is made to be simple, just run the packaged JAR file and point the node at the HUB location, Grid Extras will take care of the rest for you.

Hub SetUp:
1. After downloading selenium grid extras jar file, open command prompt and navigate to folder where grid extras jar file is available.
2. Type in command  java -jar

I renamed selenium grid extras jar file to SeleniumGridExtras.jar.

After starting seleniumgridextras it will prompt several questions.

What is the default Role of this computer? (1 - node | 2 - hub | 3 - hub & node)

Default Value: 1

if you want to use your machine as Hub..then you need to type 2, if you want to use your machine as hub and node then type 3.

In this case i am using it as hub  so i type in 2.

What is the HOST for the Selenium Grid Hub?
Default Value:
In my case it is default value so i just click Enter

What is the PORT for the Selenium Grid Hub?
Default Value: 4444
Press Enter port will be set to 4444

Default Value: VISTA

I left it as default

Would you like WebDriver, IEDriver and ChromeDriver to auto update (1-yes/0-no)
Default Value: 1
Press Enter --it will automatically updte your webdriver,IE and chrome drivers

Once you set all options your command prompt should look like this

Verify Grid Console and Grid Extras

type in the IP address which is shown in command prompt and output looks like this

It shows you  RAM and OS details

Now open grid console --- http://localhost:4444/grid/console

Grid Node Set Up:

Go to another machine and start seleniumgridExtras.jar

It will prompt several questions:

What is the default Role of this computer? (1 - node | 2 - hub | 3 - hub & node)

Default Value: 1
type 1 ..bcs we want to use this as node

What is the HOST for the Selenium Grid Hub?
Default Value:
type in IP address of HUB ..ex: 172.xx.xx.xx

What is the PORT for the Selenium Grid Hub?
Default Value: 4444
Press Enter port will be set to 4444

Will this node run 'Firefox' (1-yes/0-no)
Default Value: 0

Yes I want to run Firefox so i type in 1

What version of 'Firefox' is installed?
Default Value: 36

It will identify your firefox version. Press Enter

Will this node run 'InternetExplorer' (1-yes/0-no)
Default Value: 0
Yes I want to run IE so i type in 1

Similarly it will prompt questions for Chrome, Safari based on your requirement you have to choose option.

Would you like this Node to auto update browser versions? (1-yes/0-no)
Default Value: 1

press 1 if you want to auto update browser versions.

Should this Node record test runs? (1-yes/0-no)
Default Value: 1

Press Enter 

Once you set all the options it will start Grid Extras..

it should look like this....

Now you are all set to run your scripts on grid extras.

Again come back to HUB and navigate to http://localhost:4444/grid/console 
it should look like this

Now i can run scripts in FF,IE and Chrome.

The rest is same..you have to run your webdriver script.

Below is the sample script.

Once the execution is done...Open HUB URL http://1xx.xx.xx.xx:3000/ or in HUB machine open url 

It should look like this...

You can see videos in seleniumgrid extras folder...where you seleniumgridextras jar file is available. One folder will be created with name "video_output" in that folder you can see video files.

September 8, 2015

Selenium Grid by using VisGrid

In this I will explain you what is selenium grid and how to setup this grid in simple way...

Selenium Grid:
Selenium-Grid allows you run your tests on different machines against different browsers in parallel. That is, running multiple tests at the same time against different machines running different browsers and operating systems. Essentially, Selenium-Grid support distributed test execution. It allows for running your tests in a distributed test execution environment

(From http://www.seleniumhq.org/docs/07_selenium_grid.jsp)

When to Use It:

Generally speaking, there’s two reasons why you might want to use Selenium-Grid.
  • To run your tests against multiple browsers, multiple versions of browser, and browsers running on different operating systems.
  • To reduce the time it takes for the test suite to complete a test pass.
(From http://www.seleniumhq.org/docs/07_selenium_grid.jsp)

Grid Set Up:

To set up grid its a bit tedious task..
1. Set up Hub
2 .Register your nodes to Hub
3. Mention max number of instances and sessions...etc etc...Everything you have to do it from command prompt...

Do we need to use boring command prompt..??
Do we have any GUI for grid?
Answer is Yes

What is the tool??

Here is Answer VisGrid

VisGrid is a GUI for Selenium Grid. You can start hub, create and attach a Selenium node very easily and quickly.

Here are details about VisGrid usage:

Steps to Download VisGrid:

Scroll down to bottom of page and Enter email id and click download.
You can see Release notes here -- http://www.codoid.com/products/downloadNotes/30

After downloading, unzip VisGrid.zip
Double click on Visgrid-1.8.jar
Click Start Hub Button
Now Hub is started and 'Create Node' & 'Stop Hub' buttons are displayed

Click 'Create Node' button
Select a browser and click 'Add' button

That's it. You have created Hub and attached a node successfully
Hit http://localhost:4444/grid/console to cross check your actions

By default VisGrid-1.8 came with 2.46, if you want you can change selenium-server and drivers.

Now your Grid is configured and ready to run scripts in parallel using Selenium Grid and VisGrid.

Steps to Create Grid_Maven Project:

Create a Maven Project --- Create-sample-maven-project
Difference between normal webdriver script and Grid script is how you instantiate your browser

What is Hub:
The hub is the central point where you load your tests into.
Controlling of execution will be done from Hub
The hub is launched only on a single machine
The machine containing the hub is where the tests will be run, but you will see the browser being automated on the node.

What is Node:
Nodes are the Selenium instances that will execute the tests that you loaded on the hub.
There can be one or more nodes in a grid.
Nodes can be launched on multiple machines with different platforms and browsers.
The machines running the nodes need not be the same platform as that of the hub.

Develop Script that can run on Grid:

There are two important classes which plays major role while running scripts using Grid
DesiredCapabilites is used to set the type of browser and OS that we will automate
RemoteWebDriver is used to set which node (or machine) that our test will run against.

Here is the sample script which can run script on Grid.

Here is sample testng.xml file

Final Project you can Download from here ...


September 3, 2015

Generate XSLT reports for Webdriver scripts using ANT build.xml

This is continuation of my previous post Ant-with-selenium-webdriver-and-testng.html 

In previous post i explained how to integrate ant with selenium and testNG. In this post i will explain how to Generate XSLT reports using Ant.

Need of  XSLT reports:

Till now we are relying on reports generated by testNG. But those reports are not much interactive. XSLT reports are very interactive and easy to understand. Below is sample report.

Steps to Configure XSLT reports:

1. SeleniumWebdriver Project developed using ANT. If you want you can download it from here.


2. Download XSLT from here Download XSLT

Configure XSLT:

  1. Download testng-xslt-1.1.2-master.zip and unzip it 
  2. Copy all jar files and place them in jar library folder in your project.
  3. Copy the testng-results.xsl from the testng-xslt folder(path: XSLT jartestng-xslt-1.1.2-mastertestng-xslt-1.1.2-mastersrcmainresources) and place in your project folder.
  4. Modify xml code in build.xml

Below is updated build.xml file. which has xslt code included.

How to Generate XLST Reports:

To generate XSLT report you need to run build.xml file and need to check the task check box (makexsltreports) then report will be generated under your project with folder Name --- XSLT_Reports---output--index.html

Below is folder path screenshot:

Below is sample report: (PASSED)

Run From Command prompt:

You can run makexsltreports task from comamnd prompt also. Here is the way to run
Navigate to projetc folder from command prompt and type in --- ant  

ant makexsltreports

I updated  code to generate failed report.

Below is failed report:

Click on Test which is under TestNG Results.
Click on Failed test case method name (testTC2()). and click on exception..it will show you details about exception.

You can download project Here ... ANT_Webdriver_TestNG_XSLT