【问题标题】:Selenium web driver selection of date from jquery datepicker-UiSelenium Web 驱动程序从 jquery datepicker-Ui 中选择日期
【发布时间】:2017-06-23 22:37:50
【问题描述】:

selenium web 驱动程序如何将 jquery datepicker-UI 日期选择到特定日期字段。 1) 我曾尝试使用 Jscript 来设置日期。但是必须从 jquery 弹出窗口中选择日期才能提交表单。

请提出一些自动选择日期并将所选值发布到日期字段的方法。

谢谢

【问题讨论】:

    标签: jquery selenium webdriver


    【解决方案1】:
        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】:

      日期字段是一个普通的文本输入字段。因此,您可以像这样以正确的格式对日期输入字段执行 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() 方法。
      【解决方案3】:

      我发现了一些没有达到最佳实现的链接。使用 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"));
      

      【讨论】:

      • 也许这在给出答案时有效,但截至目前 jqueryui 的日期选择器没有年/月的选择元素。
      【解决方案4】:

      我有一个网页,它有 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();
          }
      

      【讨论】:

      • 我认为这是迄今为止最简单的方法。它不仅代码更少,而且当您在测试中输入大量日期时,它的运行速度也会更快。
      猜你喜欢
      • 2010-11-29
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2019-11-24
      相关资源
      最近更新 更多