我正在尝试在jqueryui.com网站上的日期选择器中选择一个自定义日期,它能够处理年份,但我为该月编写的代码无效。请找到我的代码使用: -
private static void PickDate(WebDriver driver, String day, String mon, String year) throws Exception {
while (year != driver.findElement(By.cssSelector("span.ui-datepicker-year")).getText())
{
if (Integer.parseInt(year) < Integer.parseInt(driver.findElement(By.cssSelector("span.ui-datepicker-year")).getText()))
{
driver.findElement(By.cssSelector("a.ui-datepicker-prev")).click();
System.out.println(driver.findElement(By.cssSelector("span.ui-datepicker-month")).getText());
}
else if (Integer.parseInt(year) > Integer.parseInt(driver.findElement(By.cssSelector("span.ui-datepicker-year")).getText()))
{
driver.findElement(By.cssSelector("a.ui-datepicker-next")).click();
}
}
while (mon != (driver.findElement(By.cssSelector("span.ui-datepicker-month")).getText()))
{
if (driver.findElement(By.cssSelector("span.ui-datepicker-month")).getText() != "January")
{
driver.findElement(By.cssSelector("a.ui-datepicker-prev")).click();
}
if (mon != driver.findElement(By.cssSelector("span.ui-datepicker-month")).getText())
{
driver.findElement(By.cssSelector("a.ui-datepicker-next")).click();
}
}
答案 0 :(得分:0)
如果目的是在datepicker中选择一个日期,我宁愿使用执行脚本而不是来回点击。 :) 类似的东西:
((JavascriptExecutor) driver).ExecuteScript("$('#datepicker').datepicker('setDate', new Date(year, month, day))")
如果您想点击上一个/下一个按钮,那么:
因为你的代码看起来很复杂,所以我想提供另一种方法,我相信这会更简单。
请注意,当您单击上一个/下一个按钮时,它将向前/向后移动1个月。因此,如果您首先计算要选择的日期(月份和年份)与DatePicker上当前显示日期之间的差异,则会更好。
如果你用java编写,你可以使用类似的东西:
YearMonth selectDate = YearMonth.of(year, month); // year, month are integer
int dp_Year = Integer.parseInt(driver.findElement(By.cssSelector("span.ui-datepicker-year")).getText());
int dp_Month = // convert it yourself
YearMonth dp_Date = YearMonth.of(dp_Year, dp_Month);
int month_diff = dp_Date.until(selectDate, ChronoUnit.MONTHS);
根据month_diff及其符号(+或 - ),您将知道需要点击哪个按钮以及多少次。 我没有java试用,但我希望上面的代码能够运行。