【发布时间】:2012-09-07 07:30:37
【问题描述】:
日期字段就像一个日历,我无法使用 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() 来检查元素,它是真的。即使在浏览器中,运行测试时,光标也会转到日期字段,但不会在其中输入任何文本。
【问题讨论】:
-
我遇到了同样的问题,但是对于 Telerik 的 RadCalendar (.NET),对我来说,这个问题是通过物理上使用日历来模拟点击日期来解决的。
-
我遇到了这个博客 [blog.reallysimplethoughts.com/2012/07/19/… 这说“sendKeys 模拟真实用户键入指定字符串中的每个字符;它还受到真实用户的限制,例如无法键入不可见或只读元素。”因此,对于我的应用来说,似乎无法在日期字段中输入内容。谁能建议任何其他解决方法来从日历中选择日期?
-
直接解决方案就像@Arran 所说的那样。您应该模拟用户选择日期。我不知道其他解决方法。
-
由于我的是数据驱动框架,模拟点击日期(动态)会有点困难。我通过使用 JavascriptExecutor 来完成这项工作,例如:
((JavascriptExecutor)driver).executeScript("arguments[0].value=arguments[1]", driver.findElement(By.id(stringc3)), stringc4);其中 stringc3 是日期字段的定位器 ID,而 stringc4 是日期,例如“01-01-2012”