【发布时间】:2017-06-23 22:37:50
【问题描述】:
selenium web 驱动程序如何将 jquery datepicker-UI 日期选择到特定日期字段。 1) 我曾尝试使用 Jscript 来设置日期。但是必须从 jquery 弹出窗口中选择日期才能提交表单。
请提出一些自动选择日期并将所选值发布到日期字段的方法。
谢谢
【问题讨论】:
selenium web 驱动程序如何将 jquery datepicker-UI 日期选择到特定日期字段。 1) 我曾尝试使用 Jscript 来设置日期。但是必须从 jquery 弹出窗口中选择日期才能提交表单。
请提出一些自动选择日期并将所选值发布到日期字段的方法。
谢谢
【问题讨论】:
driver.findElement(By.id("datepicker")).clear();
driver.findElement(By.id("datepicker")).sendKeys(""); // This will add focus and open the Date picker
String Year = driver.findElement(By.cssSelector("span.ui-datepicker-year")).getText(); //This will give you Year
String month = driver.findElement(By.cssSelector("span.ui-datepicker-month")).getText(); //This will give you Month
driver.findElement(By.cssSelector("span.ui-icon.ui-icon-circle-triangle-e")).click(); // Click for Next Month
String SelectedDate = driver.findElement(By.cssSelector(".ui-state-highlight")).getText(); // This will get you the selected Date
driver.findElement(By.cssSelector("span.ui-icon.ui-icon-circle-triangle-w")).click(); // Click for Previos Month
driver.findElement(By.linkText("6")).click(); // Instead of 6 use value date which you want to select.
希望对你有帮助
谢谢
维沙尔
【讨论】:
日期字段是一个普通的文本输入字段。因此,您可以像这样以正确的格式对日期输入字段执行 sendKeys:
// Find the text input element by its name
WebElement element = driver.findElement(new ByIdOrName("datefield")));
// Enter a date in your format
element.sendKeys("01/01/2009");
【讨论】:
onSelect() 方法。
我发现了一些没有达到最佳实现的链接。使用 Selenium 的 Select 类并不难。这是我可以使用的实用程序
public static void selectDateFromJqueryDatepicker(WebElement datePickerDiv, int expYear, int expMonth, int expDay) {
//handle 2 digit years
if(expYear < 100)
expYear += 2000;
//select the given year
Select yearSel= new Select(datePickerDiv.findElement(By.className("ui-datepicker-year")));
yearSel.selectByValue(String.valueOf(expYear));
//select the given month
Select monthSel= new Select(datePickerDiv.findElement(By.className("ui-datepicker-month")));
monthSel.selectByValue(String.valueOf(expMonth - 1)); //value start @ 0 so we need the -1
//get the table
WebElement calTable= datePickerDiv.findElement(By.className("ui-datepicker-calendar"));
//click on the correct/given cell/date
calTable.findElement(By.linkText(String.valueOf(expDay))).click();
}
您只需要以整数格式传递年/月/日和外部日期选择器 div。就我而言,我发现它是这样的
WebElement datePickerDiv= findElement(By.id("ui-datepicker-div"));
【讨论】:
我有一个网页,它有 2 个 ui-date 选择器用于选择每个日期。我使用 javascript,它可以工作
My page
编号 1:id:POcheck_D......编号 2:id:fromDate........编号 3:id:toDate
public void TestCase1()
{
//open brower
driver = new InternetExplorerDriver();
driver.Url = "xxxYourPagexxxx.com";
driver.Navigate();
//click check box
driver.FindElement(By.Id("POcheck_D")).Click();
//insert value to ui-datepicker
((IJavaScriptExecutor)driver).ExecuteScript("$('#fromDate').val('01/01/2016').change();");
((IJavaScriptExecutor)driver).ExecuteScript("$('#toDate').val('31/12/2017').change();");
//click button search
driver.FindElement(By.Id("btn_search")).Click();
}
【讨论】: