10

日期字段就像一个日历,我无法使用 Selenium WebDriver 的 sendKeys 输入日期。

但是在使用 Selenium RC 之前,日期字段中的“类型”可以正常工作。

我尝试在“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() 来检查元素,它是真的。即使在浏览器中,运行测试时,光标也会转到日期字段,但不会在其中输入任何文本。

4

5 回答 5

8

为此使用以下代码...

((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
于 2013-12-13T11:12:49.327 回答
3

我也遇到了同样的问题。这就是我找到的解决方案。这对我来说很好。只需删除输入字段的只读属性,然后像其他输入字段一样执行。

   ((JavascriptExecutor) driver).executeScript("document.getElementsByName('date'[0].removeAttribute('readonly');");
    WebElement dateFld = driver.findElement(By.id("date_completed"));
    dateFld.clear();
    dateFld.sendKeys("date Completed");
于 2013-01-31T09:45:47.573 回答
2

对于此线程的未来读者,@Flaburgan 针对问题发布的解决方案 https://github.com/mozilla/geckodriver/issues/1070 被发现适用于 Win7-64 上的 Firefox 63

“作为记录,看起来具有正确格式的 ISO 日期 (yyyy-mm-dd) 的 send_keys 有效。因此,对于您的示例,您能否尝试使用 (like) 2012-11-02 调用 send_keys?”

于 2018-10-11T07:44:38.553 回答
1

如果您使用的是 jQuery 日期选择器对象,则该字段应该是只读的,并且必须从日历对象中选择日期。在这种情况下,您可以使用 Selenium Web Driver 的“选择”类方法来选择日期。

Select date = new Select(driver.findElement(By.linkText("the date want to select")));
date.click();
于 2012-10-20T07:05:12.520 回答
0

我已经做到了,而且效果很好。注意格式。这样,您甚至可以从控件中获取值。

var dob = element(by.id('dateOfBirth'))
dob.sendKeys('20-08-1985');

expect(element(by.id('dateOfBirth')).getAttribute('value')).toBe('2015-20-08');

希望能帮助到你。

于 2015-03-05T09:36:18.163 回答