Rajesh Ganessan
Rajesh Ganessan

Reputation: 148

Handling calender in selenium?

I have coded for handling calender for selecting year , month and day.. but my requirement is to perform like If the year is less than current year , it should navigate to previous year and if the year is greater than current year it should navigate to future years ... i have done for future date.. can anyone suggest me how to handle year to navigate back if i pass the year value less than current year?

import java.util.Date; import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class DateCalender2 {

    public static WebDriver driver = null;
    public static void main(String[] args) throws InterruptedException {
    System.setProperty("webdriver.chrome.driver","D:\\work\\work_files\\eclipse_selenium_files\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();

        driver.get("http://jqueryui.com/datepicker/");

        driver.manage().window().maximize();

        driver.switchTo().frame(0);

        driver.findElement(By.xpath("//input[@id='datepicker']")).click();

//      String currentYear = driver.findElement(By.xpath("//div[@class='ui-datepicker-title']/span[@class='ui-datepicker-year']")).getText();

        Thread.sleep(2000);
//      System.out.println(currentYear);
        chooseDate("2019", "May", "13", driver);

    }

    public static void chooseDate(String year,String MonthName,String Day, WebDriver driver) throws InterruptedException {

        String currentMonth = driver.findElement(By.xpath("//div[@class='ui-datepicker-title']/span[@class='ui-datepicker-month']")).getText();
        String currentYear = driver.findElement(By.xpath("//div[@class='ui-datepicker-title']/span[@class='ui-datepicker-year']")).getText();
        System.out.println(currentYear);
        //Selecting year

//      int YearInt = Integer.parseInt(currentYear);
//      System.out.println(YearInt);
        if(!currentYear.equalsIgnoreCase(year)) {



            do {
            driver.findElement(By.xpath("//div[@id='ui-datepicker-div']/div/a[2]/span")).click();
            }
            while(!driver.findElement(By.xpath("//div[@class='ui-datepicker-title']/span[@class='ui-datepicker-year']")).getText().equals(year));
        }


        //Selecting month
        if(!currentMonth.equalsIgnoreCase(MonthName)) {
            do {
                driver.findElement(By.xpath("//div[@id='ui-datepicker-div']/div/a[2]/span")).click();
                Thread.sleep(2000);
            }
            while(!driver.findElement(By.xpath("//div[@class='ui-datepicker-title']/span[@class='ui-datepicker-month']")).getText().equals(MonthName));
        }

        //Selecting Date
            WebElement dateWidget = driver.findElement(By.id("ui-datepicker-div"));
          List rows=dateWidget.findElements(By.tagName("tr"));
          List<WebElement> columns=dateWidget.findElements(By.tagName("td"));

          for (WebElement cell: columns){
           //Select 13th Date 
           if (cell.getText().equals(Day)){
           cell.findElement(By.linkText(Day)).click();
           break;
           }
          } 
    }

}

Upvotes: 0

Views: 87

Answers (1)

Amit Jain
Amit Jain

Reputation: 4597

You can try like this using parseInt method of Integer class

Integer yearGiven="1997"
String year =driver.findElement(By.cssSelector(".ui-datepicker-year"))).getText();

String intYear =Integer.parseInt(year); // get Current year

if(intYear>yearGiven){
// Click left arrow
}

else if (intYear<yearGiven){
// Click right arrow
}
 /* You can also convert Integer to String */ 
Integer x=1955;
String strYear = String.valueOf(x);
// compare code goes here

Note - The example you have shown does not have any link which switches year, we can only switch months

Upvotes: 1

Related Questions