Automation Using Selenium Webdriver

Sunday, 23 October 2016

Datepicker using Selenium WebDriver

Calendars look pretty and of course they are fancy too.So now a days most of the websites are using advancedjQuery Datepickers instead of displaying individual dropdowns for month,day,year. :P

If we look at the Datepicker, it is just a like a table with set of rows and columns.To select a date ,we just have to navigate to the cell where our desired date is present.

Step 1:  Here I am taking Sample Website "http://www.cleartrip.com/"
step 2:  Here we can able to select date whatever we want( This is pure dynamic)
step 3:  Here I am Implementing all my logic in 'genericDatePicker()' Method. This method i am   passing date(date format should be dd/mm/yyyy).
step 4: Here First I am Clicking Calendar field and then i am getting Month/Year.
Step 5: I have written Enum method(I am assigning Number to every Month)
Step 6: After that I am calculating total months.
Step 7: Finally I am Clicking the Date From DatePicker..

Here is a sample code on how to pick a 26/10/2016..


package com.utility;

import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver; 
public class RedBus {
  WebDriver driver;
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
driver.get("http://www.cleartrip.com/");
driver.manage().window().maximize();
}

@Test
public  void datePicker(){
genericDatePicker("26/09/2016");  //date format should be dd/mm/yy
}

public  void genericDatePicker(String inputDate){
/* CLicking the Date Feild*/
WebElement ele =driver.findElement(By.id("DepartDate"));  
ele.click();
/*Here we are getting Month and Year */
String month = driver.findElement(By.xpath("//div[@class='monthBlock first']/div[1]//span[1]")).getText();
String year = driver.findElement(By.xpath("//div[@class='monthBlock first']/div[1]//span[2]")).getText();
System.out.println("Application month : "+month + " Year :"+year);
int monthNum = getMonthNum(month);
System.out.println("Enum Num : "+monthNum);
String[] parts = inputDate.split("/");   // Here I am Spliting Our Input String Value
//Here I am Implementing the Logic
int noOfHits = ((Integer.parseInt(parts[2])-Integer.parseInt(year))*12)+(Integer.parseInt(parts[1])-monthNum);
System.out.println("No OF Hits "+noOfHits);
for(int i=0; i< noOfHits;i++){
driver.findElement(By.className("nextMonth ")).click();
}
/* selecting the month div*/
List<WebElement> cals=driver.findElements(By.xpath("//div[@class='monthBlock first']//tr"));
System.out.println(cals.size());
/*iterating the "tr" list*/
for( WebElement daterow : cals){
/*getting the all "td" s*/
List<WebElement> datenums = daterow.findElements(By.xpath("//td"));
/*iterating the "td" list*/
for(WebElement date : datenums ){
/* Checking The our input Date(if it match go inside and click*/
if(date.getText().equalsIgnoreCase(parts[0])){
date.click();
break;
                      }
                 }
             }
}

// This method will return Month Number
public  int getMonthNum(String month){
for (Month mName : Month.values()) {
if(mName.name().equalsIgnoreCase(month))
return mName.value;
}
return -1;
}

// Here I am Creating Enum Method(I am assigning Number to every Month)
public enum Month {
January(1), February(2), March(3), April(4), May(5), June(6) , July(7), August(8), September(9), October(10), November(11),December(12);
private int value;

private Month(int value) {
this.value = value;
}

}

  @After
public void tearDown() throws Exception {
driver.quit();
}



}

Saturday, 22 October 2016

Getting total no.of Checkboxes/Textboxes/Dropdowns/iframes/Links on a web page

Getting total no.of Checkboxes/Textboxes/Dropdowns/iframes/Links on a web page



In one of the Previous Post we had details about WebDriver findElements() method.
 This is very useful to find the total no.of  desired elements on a wepage .

Here are some of the examples :

Getting total no.of Links on a Webpage :
Here is the sample code to get the total no.of links on facebook registration page:


Getting total no.of checkboxes on a Webpage :
Here is the sample code to get the total no.of checkboxes on facebook registration page:

driver.get("http://facebook.com");
List<webelement> checkboxes=driver.findElements(By.xpath("//input[@type='checkbox']"));
System.out.println("total checkboes "+checkboxes.size());
</webelement>


Getting total no.of dropdown menus on a Webpage :
Here is the sample code to get the total no.of dropdown menus on a facebook registration page:

driver.get("http://facebook.com");
List<webelement> dropdown=driver.findElements(By.tagName("select"));
System.out.println("total dropdown lists "+dropdown.size());
</webelement>

Getting total no.of textboxes on a Webpage :
Here is the sample code to get the total no.of textboxes on facebook registration page:

driver.get("http://facebook.com");
List <webelement> textboxes=driver.findElements(By.xpath("//input[@type='text'[@class='inputtext']"));
System.out.println("total textboxes "+textboxes.size());
</webelement>

Here is the sample code to get the total no.of textboxes on hotmail registration page:

driver.get("https://signup.live.com");
List <webelement> totalTextboxes=driver.findElements(By.xpath("//input[@type='text']"));
System.out.println("total textboxes "totalTextboxes.size());
</webelement>

Getting total no.of iframes on a Webpage :
Here is the sample code to get the total no.of iframes :

driver.get("https://www.facebook.com/googlechrome/app_158587972131");
List <webelement> totaliFrames=driver.findElements(By.tagName("iframe"));
System.out.println("total links "+totaliFrames.size());
</webelement> 

Read background color of an element


Code For Backgroud color of an element
driver.get("http://www.google.co.in/"); String color = driver.findElement(By.name("btnK")).getCssValue("background-color"); System.out.println("The background color of Google search button"+color);