Hello,
The below is the code for date picker the given date is not getting selected but the date is displayed as 11-09-2019. Can you please help me to resolve this issue.
package customename
import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import com.kms.katalon.core.annotation.Keyword
import com.kms.katalon.core.checkpoint.Checkpoint
import com.kms.katalon.core.checkpoint.CheckpointFactory
import com.kms.katalon.core.logging.KeywordLogger
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords
import com.kms.katalon.core.model.FailureHandling
import com.kms.katalon.core.testcase.TestCase
import com.kms.katalon.core.testcase.TestCaseFactory
import com.kms.katalon.core.testdata.TestData
import com.kms.katalon.core.testdata.TestDataFactory
import com.kms.katalon.core.testobject.ObjectRepository
import com.kms.katalon.core.testobject.TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords
import internal.GlobalVariable
import MobileBuiltInKeywords as Mobile
import WSBuiltInKeywords as WS
import WebUiBuiltInKeywords as WebUI
import org.openqa.selenium.WebElement
import org.openqa.selenium.support.ui.*
import org.openqa.selenium.WebDriver
import org.openqa.selenium.By
import com.kms.katalon.core.mobile.keyword.internal.MobileDriverFactory
import com.kms.katalon.core.webui.driver.DriverFactory
import com.kms.katalon.core.testobject.RequestObject
import com.kms.katalon.core.testobject.ResponseObject
import com.kms.katalon.core.testobject.ConditionType
import com.kms.katalon.core.testobject.TestObjectProperty
import com.kms.katalon.core.mobile.helper.MobileElementCommonHelper
import com.kms.katalon.core.util.KeywordUtil
import com.kms.katalon.core.webui.exception.WebElementNotFoundException
import com.kms.katalon.core.webui.common.WebUiCommonHelper
class sample {
@Keyword
public static void Datepicker(TestObject calender, String exp_Date, String exp_Month,String exp_Year)throws Exception {
String expDate = null, calYear = null,datepickerText=null,minYear=null,maxYear=null;
//KeywordLogger log = new KeywordLogger()
//log.logInfo(exp_Date+“yes”+exp_Month+“yes”+exp_Year);
int expMonth = 0, expYear = 0;
WebElement datePicker1;
WebElement datePickerY;
WebElement datePickerM;
WebElement datePickerD;
List<WebElement> noofDayss=null,noOfDays=null,noOfMonths=null,noOfYears=null;
boolean dateNotFound = true;
List<String> monthList = Arrays.asList("None","Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
def driver = DriverFactory.getWebDriver()
//DriverFactory.changeWebDriver(driver)
//driver.findElement(By.xpath("(//div[2]/div[2]/div/div/div/input)[1]")).click();
WebElement SelectCalender = WebUiCommonHelper.findWebElement(calender, 20);
SelectCalender.click()
expDate = (exp_Date);
println(expDate);
expMonth = Integer.parseInt(exp_Month);
println(expMonth);
expYear = Integer.parseInt(exp_Year);
println(expYear);
Thread.sleep(9000);
driver.findElement(By.xpath("//select[2]")).click();
WebElement datePicker_Heading3 =(driver).findElement(By.xpath("(//select[@class='ui-datepicker-year'])/option"));
println(datePicker_Heading3.getText());
//wait.until(ExpectedConditions.visibilityOf(datePicker_Heading3));
datepickerText =datePicker_Heading3.getText();
String[] datepickerYear = datepickerText.split("-");
minYear =datepickerYear[0];
maxYear = datepickerYear[180];
if((expYear >= Integer.parseInt(minYear)) && (expYear<=Integer.parseInt(maxYear))) {
datePickerY = (driver).findElement(By.xpath("//select[@class='ui-datepicker-year']"));
noOfYears = datePickerY.findElements(By.xpath("(//select[@class='ui-datepicker-year'])/option"));
firstloop:
for (WebElement year : noOfYears) {
// Select the date from date picker when condition
// match.
if (year.getText().equalsIgnoreCase((String)exp_Year)) {
year.click();
Thread.sleep(1500);
datePickerM = (driver).findElement(By.xpath("//select[@class='ui-datepicker-month']"));
noOfMonths = datePickerM.findElements(By.xpath("//select[@class='ui-datepicker-month']/option"));
Thread.sleep(1000);
for (WebElement month : noOfMonths) {
System.out.println(" the expected month in int is : "+expMonth);
System.out.println(" the expected month is : "+monthList.get(expMonth));
System.out.println(" the Actual month is : "+month.getText());
if ((monthList.get(expMonth)).equalsIgnoreCase(month.getText())) {
month.click();
datePickerD = (driver).findElement(By.xpath("(//table[@class='ui-datepicker-calendar'])//tbody"));
noOfDays = datePickerD.findElements(By.xpath("(//table[@class='ui-datepicker-calendar']/tbody/tr/td)//a"));
Thread.sleep(1500);
for (WebElement cell : noOfDays) {
if (cell.getText().equalsIgnoreCase(expDate)) {
cell.click();
break firstloop;
}
}
}
}
}
// else{
//
// throw new Exception()
// }
}
dateNotFound = false;
}else if (expYear > Integer.parseInt(maxYear)) {
WebElement Next =(driver).findElement(By.xpath("//div/a[2]/span[@class='ui-icon ui-icon-circle-triangle-e']"));
if(Next.getAttribute("style").equalsIgnoreCase("visibility: visible;"))
{// Click on next button of date picker.
Next.click();
}else {
throw new Exception("This is exception")
}
}
// If current selected month and year are greater than expected
// month and year then go Inside this condition.
else if (expYear < Integer.parseInt(minYear)) {
WebElement Previous =(driver).findElement(By.xpath("//div/a/span[@class='ui-icon ui-icon-circle-triangle-w']"));
if(Previous.getAttribute("style").equalsIgnoreCase("visibility: visible;"))
{
// Click on previous button of date picker.
Previous.click();
}else{
throw new Exception("This is exception")
}
}
}
}
Please find the below screen shot for datepicker