从datepicker中选择未来和过去日期的自动化

时间:2017-12-20 07:34:44

标签: angularjs datepicker protractor

我正在使用量角器开发e2e。有一种情况我需要选择一个未来日期(从今天起10天),一个过去日期(从今天起5天)。如果今天的日期是2017年12月20日,我需要从两个独立的日期选择器中选择12/30/2017(未来日期)和12/15/2017(过去的日期)。我尝试了以下代码,但即使通过添加天数(10)来指定未来日期,也会每天选择今天的日期。未来日期在控制台上正确打印,但它是从datepicker中选择今天的日期。请让我怎么做。

function consentEffectiveDate(){

        var picker = element(by.model('case.consentEffectiveDate'));
        // get today's date
        var today = new Date();
        var dd = today.getDate()+10;
        console.log("date: "+dd);
        var mm = today.getMonth() + 1; //January is 0!
        var yyyy = today.getFullYear();

        if (dd < 10) {
            dd = '0' + dd
        }

        if (mm < 10) {
            mm = '0' + mm
        }
        today = mm + '/' + dd + '/' + yyyy;
        picker.sendKeys(today);
        console.log("date:"+today);

提前感谢您的帮助。

html代码

<input type="text" readonly="readonly"
    class="form-control effectiveDate ng-pristine ng-valid ng-valid-pattern ng-touched" 
    name="effectiveDate" id="effectiveDate"
    ng-model="case.consentEffectiveDate" placeholder="MM/DD/YYYY"
    ng-pattern="/^([0]?\d{1}|[1][0-2])\/(([0-2]?\d{1})|([3][0,1]{1}))\/(([1]{1}[9]{1}[9]{1}\d{1})|([1-9]{1}\d{3}))$/" 
    data-ng-change="model.compareDates(case.consentEffectiveDate, case.consentExpiresDate, new_consent);"
    ng-class="{ 'has-error' : new_consent.effectiveDate.$invalid &amp;&amp; (new_consent.effectiveDate.$dirty || submitted)}"
    style="">

1 个答案:

答案 0 :(得分:0)

之前我遇到过同样的问题。对我而言,日期选择器没有被量角器聚焦,因此日期没有发送到输入字段。

首先点击它然后传递键,尝试聚焦元素。

var picker = element(by.model('case.consentEffectiveDate'));
picker.click().sendKeys(today);

如果有可能预先填写日期,您可以这样写,以便在输入新日期之前从选择器中删除上一个日期。

picker.click().sendKeys(protractor.Key.CONTROL, "a", protractor.Key.NULL, today);

希望这有帮助