基于月份文本的自动化日期选择器

Automate date-picker based on month text

我正在尝试在页面上自动执行日期选择器,我想点击 previous/next 按钮,直到到达日历中的所需月份。但是按钮不会点击,只有当它点击并且测试用例通过时才不会再继续。当前月份是 9 月,它单击并转到 8 月,测试用例通过而无需进一步单击,假设我想单击到 1 月它不会发生

@FindBy(css=".ui-datepicker-month") //month displayed in date-picker
WebElement labelCalendarMonth;

@FindBy(id="txtStartDate_calendarButton") // button to open the date-picker
WebElement searchStartDateButton;

@FindBy(xpath="//a[@title='Prev']") // previous button in date-picker
WebElement calendarSearchStartDatePreviousBtn;

public void selectStartMonth(WebElement ele, String value) {
  if(!labelCalendarMonth.getText().equals(value))
  {
    ele.click();
  }
}

public void clickCalendarSearchStartDatePreviousBtn() throws InterruptedException
{
    selectStartMonth(calendarSearchStartDatePreviousBtn, "January");
}

@Test()
public void testAddResourceSchedule() throws InterruptedException 
{
    resourceSchedulePage.clickCalendarSearchStartDatePreviousBtn();
}

我曾与 https://www.booking.com/ 合作过,他们确实有日期选择器,所以只是想提醒一下我们如何处理这种情况,我们必须点击直到一定时间,例如:直到对于您的 Jan,我们可以执行以下操作:-

很明显我们必须 infinite while loop.

while(true){
    if(driver.findElement(By.xpath("month xpath which you wanna selct ")).getText().equalsIgnoreCase(month) && driver.findElement(By.xpath("year xpath that you wanna select")).getText().equalsIgnoreCase(year)) {
        break;
    }
    else {
        wait.until(ExpectedConditions.elementToBeClickable(By.xpath("next botton xpath here, which is on date picker."))).click();
        Thread.sleep(500);
    }
}

基本上,问题是您需要在 运行 这段代码之前的 string format. 中提前定义 monthyear

我在这里 写了一个很好的解决方案,我一直点击到 Nov-2022

的结尾