【问题标题】: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();
}

【问题讨论】:

    标签: selenium selenium-webdriver automation selenium-chromedriver ui-automation


    【解决方案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),因为我输入的是大写的月份,但在日历中它是大写的,但无论如何解决方案都非常有效。
    猜你喜欢
    • 2019-08-29
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多