根据月份文本自动化日期选择器

Posted

技术标签:

【中文标题】根据月份文本自动化日期选择器【英文标题】:Automate date-picker based on month text 【发布时间】:2021-10-31 22:38:01 【问题描述】:

我正在尝试自动化页面上的日期选择器,并且我想点击上一个/下一个按钮,直到我到达日历中所需的月份。但是该按钮没有单击,只有在单击并且测试用例通过时才单击。当前月份是 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();


【问题讨论】:

【参考方案1】:

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

很明显我们必须有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

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

【讨论】:

wait = new WebDriverWait(driver, 20),你需要在执行这个while循环之前声明这个。 这个点击很好,不是像之前那样停止一次点击,但是即使我提到了年份和月份,它也会无限次点击,所以我试图弄清楚这一点,但是非常感谢,因此我会走得更远。 只有当且仅当,如果条件满足,这个循环才会打破无限循环,所以你最好检查一下 if 大括号里面有什么。 您的解决方案工作正常,但我觉得我们应该有driver.findElement(By.xpath("month xpath which you wanna selct ")).getText().equalsIgnoreCase(month),因为我输入的是大写的月份,但在日历中它是大写的,但无论如何解决方案都非常有效。

以上是关于根据月份文本自动化日期选择器的主要内容,如果未能解决你的问题,请参考以下文章

日期选择器显示错误的月份[重复]

android有月份选择器吗?或者怎么让日期选择器的日期不显示,只显示年份和月份

layui日期选择月份点击选中

elementui日期选择器只选择月份后如何监听

没有日期选择的角度日期选择器(只有月份和年份)

uniapp时间日期选择器 - 只选择月份 - 月份选择器picker