Handling Datepicker using Selenium WebDriver_Selenium online Training

Many applications are using jQuery Date pickers for selecting date.So selecting date picker using selenium is a not a difficult task.

In this post, I will explain how can we select date from a Date picker using  selenium webdriver.
Please find the below sample code for the same.


Sample code:
import java.util.concurrent.TimeUnit;
import org.testng.annotations.*;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;

public class HandleDatePicker {
  private WebDriver driver;
  private String baseUrl;


  @BeforeClass
  public void setUp() throws Exception {
System.setProperty("webdriver.chrome.driver", "D:/Sudharsan/Official/Selenium  jars/chromedriver.exe");
driver = new ChromeDriver();
    baseUrl = "http://opensource.demo.orangehrmlive.com/";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    driver.manage().window().maximize();
  }

  @Test
  public void testUntitled() throws Exception {
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    driver.get(baseUrl + "/or");
    driver.findElement(By.cssSelector("span.form-hint")).click();
    driver.findElement(By.id("txtUsername")).clear();
    driver.findElement(By.id("txtUsername")).sendKeys("Admin");
    driver.findElement(By.id("txtPassword")).clear();
    driver.findElement(By.id("txtPassword")).sendKeys("admin");
    driver.findElement(By.id("btnLogin")).click();
    Thread.sleep(5000);
    driver.findElement(By.xpath("//b[contains(.,'Leave')]")).click();

    //selecting date with different formats you can give with any one following
    selectDate("23 Jun 1991");

    //selectDate("23-06-1991");
    //selectDate("23/Jun/1991");
    //selectDate("23/06/1991");
    //selectDate("23 Jun 1991");

  }

  //Reusable Method for Selecting Date
  public void selectDate(String format){
  driver.findElement(By.className("ui-datepicker-trigger")).click();

  //identifying format
  String date[] = null;
  if(format.contains("-")){
   date =format.split("-");
  }
  else if(format.contains("/")){
    date =format.split("/");
  }
  else if(format.contains(" ")){
    date =format.split(" ");
  }
  //Splitting data
  String day=date[0];
  String month=date[1];
  String year=date[2];

  //Selecting data based on format
  if(month.length()==2){
  //selecting month if you are giving input format as dd-mm-yyyy
  new Select(driver.findElement(By.className("ui-datepicker-month"))).selectByIndex(Integer.parseInt(month)-1);
  }
  else if(month.length()!=2){
//selecting month if you are giving input format as dd-mmm-yyyy
  new Select(driver.findElement(By.className("ui-datepicker-month"))).selectByVisibleText(month);
  }
  //selecting year
  new Select(driver.findElement(By.xpath("//select[@class='ui-datepicker-year']"))).selectByVisibleText(year);

   //click on day
   driver.findElement(By.linkText(day)).click();
     }
}

Note: I will update the code for rest of Date pickers ASAP.