Selenium Webdriver有时会跳过日期字段

Selenium Webdriver有时会跳过日期字段,selenium,selenium-webdriver,webdriver,selenium-chromedriver,Selenium,Selenium Webdriver,Webdriver,Selenium Chromedriver,我有一个日期字段,它有时会由Webdriver元素.sendKeys()填写,有时会被跳过。(使用Chromedriver 2.9) 元素定位器信息: <input id="dateOfBirth" type="date" class=" form-control " placeholder=""> 有人知道为什么只有日期字段才会出现这种情况吗?如果失败了,有没有更好的解决办法? 谢谢 注意:我的应用程序只在Chrome上运行,因此我无法确认问题是否发生在其他浏览器中根据您的控制台

我有一个日期字段,它有时会由Webdriver元素.sendKeys()填写,有时会被跳过。(使用Chromedriver 2.9)

元素定位器信息:

<input id="dateOfBirth" type="date" class=" form-control " placeholder="">
有人知道为什么只有日期字段才会出现这种情况吗?如果失败了,有没有更好的解决办法? 谢谢


注意:我的应用程序只在Chrome上运行,因此我无法确认问题是否发生在其他浏览器中根据您的控制台输出,您使用的定位器不正确。似乎我在任何地方都看不到
数据模型属性
attr,让我们使用ID

enterText(driver.findElement(By.id("dateOfBirth")), "test");

我相信输入类型“date”对HTML5来说是新的,并且需要RFC3339特定的:


尝试使用1981-01-01,它应该会起作用。YYYY-MM-DD,而不是您提供的MM/DD/YYYY。

我们在日期字段中得到了相同的错误。尤其是最近chrome浏览器升级到34版。尝试回滚到版本33。它应该可以工作。

我通过执行一些javascript来填充日期字段,从而解决了这个问题

protected void FillOutDate(string cssSelector, DateTime date)
    {
        var js = Driver as IJavaScriptExecutor;
        if (js != null) js.ExecuteScript(string.Format("$('{0}').val('{1}').change()", cssSelector,date.ToString("yyyy-MM-dd")));
    }
或者干脆

  ((IJavaScriptExecutor)Driver).ExecuteScript("$('#IdSelector').val('2014-06-11').change()");

谢谢,但是定位器是正确的。在将webElement传递到函数中之前,我检查它是否可见,并在前面的方法中显示。数据模型属性来自父元素,可与其他文本字段配合使用;它只是在date fieldsbtw上随机失效,我刚刚在air pair上查看了你的个人资料,你在这里试图回答我的问题。当然是编程之神把我们带到了一起:)听起来不错,但不幸的是没有起作用。另外,当我以YYYY-MM-DD的形式输入日期时,应用程序希望输入的日期为MM/DD/YYYY,结果不是正确的日期:*线程:1信息:输入文本:1981-11-01*线程:1信息:输入的文本是:11101-12-08上面的代码段中“输入的文本”行来自哪里?是否可能此字段为只读?嗯,这似乎有帮助。我会暂时关闭这个,如果它再次抬起丑陋的头,我会重新打开它。
protected void FillOutDate(string cssSelector, DateTime date)
    {
        var js = Driver as IJavaScriptExecutor;
        if (js != null) js.ExecuteScript(string.Format("$('{0}').val('{1}').change()", cssSelector,date.ToString("yyyy-MM-dd")));
    }
  ((IJavaScriptExecutor)Driver).ExecuteScript("$('#IdSelector').val('2014-06-11').change()");