根据月份文本自动化日期选择器
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.
中预先定义month
和year
。
我在这里as well 写了一个很好的解决方案,我一直点击到Nov-2022
结束
【讨论】:
wait = new WebDriverWait(driver, 20)
,你需要在执行这个while循环之前声明这个。
这个点击很好,不是像之前那样停止一次点击,但是即使我提到了年份和月份,它也会无限次点击,所以我试图弄清楚这一点,但是非常感谢,因此我会走得更远。
只有当且仅当,如果条件满足,这个循环才会打破无限循环,所以你最好检查一下 if 大括号里面有什么。
您的解决方案工作正常,但我觉得我们应该有driver.findElement(By.xpath("month xpath which you wanna selct ")).getText().equalsIgnoreCase(month)
,因为我输入的是大写的月份,但在日历中它是大写的,但无论如何解决方案都非常有效。以上是关于根据月份文本自动化日期选择器的主要内容,如果未能解决你的问题,请参考以下文章