January 18, 2017

Git Installation

Git :

Git is a version control system (VCS) for tracking changes in computer files and coordinating work on those files among multiple people. It is primarily used for software development,but it can be used to keep track of changes in any files. As a distributed revision control system it is aimed at speed,data integrity and support for distributed, non-linear workflows

Steps to Install Git:

Download Latest Git installer  Git For Windows.

While installing Git make sure you check 2 check boxes. GIT Bash and GIT GUI.


When you've successfully started the installer, you should see the Git Setup wizard screen. Follow the Next and Finish prompts to complete the installation.

While installing keep default options that will be ok for most of the users.


Once the installation is done if you search for git you will see Git Bash and GitGUI.

GitBash:

Git for Windows provides a BASH emulation used to run Git from the command line. *NIX users should feel right at home, as the BASH emulation behaves just like the "git" command in LINUX and UNIX environments.



GitGUI:

Git for Windows also provides the Git GUI, a powerful alternative to Git BASH, offering a graphical version of just about every Git command line function, as well as comprehensive visual diff tools.


Shell Integration:

Simply right-click on a folder in Windows Explorer to access the BASH or GUI.



Next Post on Create Repository and Clone it to Local Machine.

Create Repo Using GitHub


Read more ...

Git and GitHub

In this article I will discuss about Git and GitHub.

First question comes in everybody's mind, what is Git and what is GitHub. Both are same or different?


GIT:
Below is the definition from GIT official site.
 (https://git-scm.com/)
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency

Git is a distributed version control system.

There are two types of  version control systems out there. “centralized” and “distributed”.

Centralized:
A single place everyone can check in and check out.  Example :CVS, Subversion, and Perforce

Distributed:
Every developer/user has their own repo. Everyone can push changes into a common repo. Example : Git, Mercurial, Bazaar or Darcs


The below diagram show the core difference.

SVN & Git - Git Actions





To know more or practice git commands please see this link https://try.github.io/levels/1/challenges/1


GitHub:

Online project hosting using Git. It Includes source-code browser, in-line editing, wikis and ticketing. Free for public open-source code.

GitHub is a code hosting platform for version control and collaboration. It lets you and others work together on projects from anywhere.

GitHub is a web-based Git repository hosting service, which offers all of the distributed revision control and source code management (SCM) functionality of Git as well as adding its own features.


Below are some of the advantages of GitHub:


  • Version control your projects
  • Push your projects to GitHub and let the world know how nice and useful code you write
  • Explore other’s projects on GitHub, get inspired code more, or contribute to their project
  • Collaborate with others, by letting other people contribute to your projects or you contributing to other’s projects

Below are some posts related to Git and Github.

Git Installation

Create Repo Using GitHub

How to use Git commands



Read more ...

July 12, 2016

Perfect Example for Handling Window,popup,Frame and Alerts

In this post i will explain about how to handle

  1. Multiple windows
  2. Popups
  3. Tabs
  4. Frames
  5. Alerts
and how to write customized functions, instead of duplicating the webdriver code.

Here is one example to switchToChildWindow()
This method is useful to switch to new window/tab/popup if you have only 2 windows/tabs/popup then you can use below customized function.



In the below example i wrote different functions 

  1.  isElepresent(By locator) -- Verify if the element is present or not
  2. selectByText(By locator, String visibleText) select a value from dropdown
  3. switchToChildWindow() ---Switch to  child window. If there are only two windows.
  4. switchToWindowByTitle(String title)  ---Switch to child window. Use this if title of the pages are unique.
  5. switchToFrame(WebElement locator)  --switch to frame by locating the frame.


Scenario: which has all multiple windows/tabs/popups/alerts/frames etc...

  1. Open http://www.hdfcbank.com/
  2. Close the Ad window if that is visible
  3. Click on Agri Link --which will open new window/tab
  4. Select "Telugu" from dropdown
  5. Handle the alert
  6. Select "English" from dropdown
  7. Click on Account Details --which will open new window/tab
  8. In the new window, enter customer ID --"test" (Actually this text box is in frame)
  9. Click on Privacy Policy link (Actually this link is in another frame) --which opens new window/tab/popup
  10. Click on CSR link on Privacy Policy page.
  11. Now come back to Main window (Parent window) 
  12. Click on Customer Care.

Below is the code:







Read more ...

June 13, 2016

Handling OnChange events using Selenium webdriver and Java script

In this post I will discuss about onchange events.

What is onchange event?
The onchange event occurs when the value of an element has been changed.
For radiobuttons and checkboxes, the onchange event occurs when the checked state has been changed.

onChange specifies script code to run when the data in the input field changes. The onChange event is triggered when the contents of the field changes.

In this example if you type some thing in Quantity filed and click on anywhere on the page it will automatically update Total.








We can handle onchange events in different ways.

1. After entering quantity we can simulate clicking TAB button. But this is approach will not work always.

2. By using Java script we can trigger onchange event.


Using Java script to trigger onchange event...


((JavascriptExecutor)driver).executeScript("arguments[0].onchange()", driver.findElement(By.name("vn_qty")));

Below is the sample script.










Read more ...

March 3, 2016

Advanced Xpath with Examples

Here i am going to discuss about advanced usage of xpaths..
I will provide examples how to use xpath Axes.

Descendants
A node's children, children's children, etc.
In the following example; descendants of the form element are the div, title, author, year, and price elements


<form>

<div>
  
<title>Harry Potter</title>
  
<author>J K. Rowling</author>
  
<year>2005</year>
  
<price>29.99</price>
</div>

</form>


Here is Example:





If you want to find descendants of Div tag you need to use below syntax

//div[@id='browse-category']/descendant::*

If you want a specific element from descendants then use below syntax

Here i want to identify Payment link using descendant.

//div[@id='browse-category']/descendant::a[@data-category='Payment']

In the above example descendant will search for child elements and child's child elements as well.

UL is the child element for DIV and LI is the child element for UL and A is child element for LI. As we used descendant it will check for the matching element.



Following:
Selects everything in the document after the closing tag of the current node.


selects all elements after closing tag of P

//p[@class='fk-font-14']/following::*




if you want a specific element using following below is the example

//p[@class='fk-font-14']/following::div[@id='fk-mainfooter-id']


Following-sibling:
Selects all siblings after the current node.
//div[@id='browse-category']/ul/li/following-sibling::*

if you want a specific element then

//form[@class='faqsearchform']/following-sibling::div





Preceding :
Selects all nodes that appear before the current node in the document, except ancestors, attribute nodes and namespace nodes

preceding-sibling
Selects all siblings before the current node

Here is the example:

//div[@id='browse-category']/preceding-sibling::form





Now Lets see a real time example how to use the above mentioned xpath Axes:

Below is scenario:


  1. Navigate to flipkart
  2. add two products to cart
  3. I want to remove one product based on its name.




Simple xpath without using product name --- //a[@class='cart-remove-item fk-inline-block fk-uppercase'] but it always identifies first Remove button.


First Step: I will identify xpath for product Name

//span[text()='HP 15-af114AU Notebook(AMD Quad Core A8/ 4GB/...']

From there onward using xpath Axes i need to identify Remove link.

By loooking at DOM we can understand that there are two TR tags 
in one TR --we have product details and in another TR we have remove link.

so i have to traverse to second TR.

Second Step: Inorder to do that i need to traverse to parent element of span

//span[text()='HP 15-af114AU Notebook(AMD Quad Core A8/ 4GB/...']/ancestor::tr[1]

Third Step: from there traverse to sibling of TR
//span[text()='HP 15-af114AU Notebook(AMD Quad Core A8/ 4GB/...']/ancestor::tr[1]/following-sibling::tr

Fourth Step: From there traverse to tag A which has link text of Remove..here is the final xpath

//span[text()='HP 15-af114AU Notebook(AMD Quad Core A8/ 4GB/...']/ancestor::tr[1]/following-sibling::tr
/descendant::a[text()='Remove']


Hope this is useful in writing advanced xpaths....if you have any questions please do comment and I will be happy to help in you in writing xpaths..







Read more ...

October 30, 2015

Run selenium tests in Chrome and IE browser

How to run the selenium test scripts in Chrome/IE browser ?

To run the selenium test cases in Chrome/IE browser is necessary and need of today's web world as Chrome being the one of the best and most widely used web browser.

Selenium by default supports only Mozilla Firefox . 

To run your tests in Chrome browser please do the following set-up.

1. Download chrome browser related jar file from here.

2. Set the System configuration by adding the following code.

System.setProperty("webdriver.chrome.driver", "Path to chrome related jar file downloaded in step 1");
WebDriver driver = new ChromeDriver();

To run the test in Internet explorer.

1. Download IE browser related jar file from here.

2. Set the System configuration by adding the following code.

System.setProperty("webdriver.ie.driver", "C:\\Users\\ajain5\\Downloads\\IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver();



Read more ...

October 20, 2015

Handling Basic Authentication Using Webdriver

Here is post which explains you how to handle basic authentication.

Problem:

Some of the applications that are secured with Basic Authentication. If you want to access those applications first you need to pass credentials. Those applications will launch a system level pop-up which cant not be handled by selenium.

IF you access below url it will ask for authentication.

http://the-internet.herokuapp.com/basic_auth



Solution:

By specifying userName and password in URL when accessing the page we can avoid system level dialog. This approach will work for HTTP and HTTPS pages.


Reference: http://elementalselenium.com/tips/13-work-with-basic-auth

Example:

Read more ...

October 8, 2015

Selenium Integration With Jenkins

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

Prerequisites:
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






Read more ...

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
Loggers
Appenders
Layouts

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:



Read more ...

October 2, 2015

Handling webtables

This post explains about Handling Webtables.

Get Number of Columns
Get Number of Rows
Get Content of a specific cell based on Row and Column value.

Below is the code:



Read more ...