Selenium веб-драйвер выбора даты из jquery datepicker-Ui - PullRequest
4 голосов
/ 28 ноября 2011

Как веб-драйвер селена может выбрать дату jquery datepicker-UI для определенного поля даты.1) Я попытался использовать Jscript для установки даты. Но, однако, во всплывающем окне jquery для выбора формы нужно выбрать дату msut.

Пожалуйста, предложите какой-нибудь способ автоматического выбора даты иотправить выбранное значение в поле даты.

Спасибо

Ответы [ 4 ]

3 голосов
/ 20 июля 2012
    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.

Надеюсь, это поможет Вам

Спасибо
Вишал

2 голосов
/ 28 ноября 2011

Поле даты является обычным полем ввода текста. Таким образом, вы можете сделать 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");
1 голос
/ 23 января 2014

Я нашел несколько ссылок с неоптимальными реализациями.Используя класс Selenium's 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"));
0 голосов
/ 23 июня 2017

У меня есть веб-страница, и у нее есть 2 палитры для выбора даты на каждую дату. Я использую JavaScript, и это работает
Моя страница

Номер 1: идентификатор: POcheck_D ...... Номер 2: идентификатор: fromDate ........ Номер 3: идентификатор: 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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...