日期字段就像一个日历,我无法使用Selenium WebDriver的sendKeys输入日期。
但是在使用Selenium RC之前,日期字段中的“type”工作正常。
我尝试在“sendKeys()”之前使用“clear()”但是这给出了错误:
Caught Exception: Element is read-only and so may not be used for actions
Command duration or timeout: 10.11 seconds
sendKeys()适用于其他文本输入字段。
我尝试使用isDisplayed()来检查元素,它是真的。即使在浏览器中,当运行测试时,光标也会转到日期字段,但不会在其中键入任何文本。
答案 0 :(得分:6)
使用以下代码...
((JavascriptExecutor)driver).executeScript ("document.getElementById('dateofbirth').removeAttribute('readonly',0);");
WebElement BirthDate= driver.findElement(By.id("dateofbirth"));
BirthDate.clear();
BirthDate.sendKeys("20-Aug-1985"); //Enter this date details with valid date format
答案 1 :(得分:3)
我也遇到了同样的问题。这就是我找到的解决方案。这对我来说很好。 只需删除输入字段的只读属性,然后像其他输入字段一样。
((JavascriptExecutor) driver).executeScript("document.getElementsByName('date'[0].removeAttribute('readonly');");
WebElement dateFld = driver.findElement(By.id("date_completed"));
dateFld.clear();
dateFld.sendKeys("date Completed");
答案 2 :(得分:2)
对于该线程的未来读者,@ Flaburgan发布的解决方案 https://github.com/mozilla/geckodriver/issues/1070 被发现可以在Win7-64上使用Firefox 63
“为了便于记录,看起来具有正确格式的ISO日期(yyyy-mm-dd)的send_keys起作用。因此,以您的示例为例,您可以尝试使用诸如2012-11-02这样的值来调用send_keys吗?”
答案 3 :(得分:1)
如果您使用的是jQuery日期选择器对象,则该字段应为只读,并且必须从日历对象中选择日期。在这种情况下,您可以使用Selenium Web Driver的“选择”类方法来选择日期。
Select date = new Select(driver.findElement(By.linkText("the date want to select")));
date.click();
答案 4 :(得分:0)
我做到了这一点而且效果很好。照顾格式。通过这个,您甚至可以从控件中获取值。
var dob = element(by.id('dateOfBirth'))
dob.sendKeys('20-08-1985');
expect(element(by.id('dateOfBirth')).getAttribute('value')).toBe('2015-20-08');
希望它有所帮助。