如何使用Protractor清除type = date的输入

时间:2016-10-17 17:17:30

标签: javascript angularjs selenium-webdriver protractor selenium-chromedriver

我正在使用protractor版本4.0.4,并且在类型设置为date时无法清除输入。看来Chrome正在添加一些干扰的特殊控件。

您可以在此处详细了解Chrome对日期类型的处理方式

https://developers.google.com/web/updates/2012/08/Quick-FAQs-on-input-type-date-in-Google-Chrome

GitHub上也讨论过这个问题,但这些建议似乎都不适用于我。

https://github.com/angular/protractor/issues/562

与此同时,我尝试了以下方法 1)element.clear()

导致错误,指出“元素必须是用户可编辑的才能清除它”

2)element.sendKeys(protractor.Key.BACK_SPACE)

似乎导致输入被选中(只是月份部分)而没有任何实际被删除

那么是否有一些方法可以使用我缺少的量角器清除日期类型输入字段?

1 个答案:

答案 0 :(得分:0)

使用element.sendKeys单独发送日期在日期输入时不可靠。它似乎首先在发送密钥之前选择中心。因此,您还应该使用LEFT和RIGHT键定位光标。

设定日期12/07/2016:

var LEFT = Key.LEFT, RIGHT = Key.RIGHT, DELETE = Key.DELETE;

element.sendKeys(LEFT + LEFT + LEFT + "12072016")

要清除日期:

var LEFT = Key.LEFT, RIGHT = Key.RIGHT, DELETE = Key.DELETE;

element.sendKeys(LEFT + LEFT + LEFT + DELETE + RIGHT + DELETE + RIGHT + DELETE)

请注意,您可能需要根据日期格式更改密钥组合。

清除日期的另一种方法是使用一些JavaScript,但要注意它不会模拟真实用户的行为:

browser.executeScript(function(elem) {
  elem.value = '';
  elem.dispatchEvent(new Event('change'));
}, element);