Reputation: 148
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
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