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



我使用量角器在E2E上工作。在某种情况下,我需要选择一个将来的日期(从今天提前10天),一个过去的日期(从今天起5天)。如果今天的日期是2017年12月20日,我需要从两个单独的datepickers中选择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="">

我以前经历过同一问题。对我来说,那是日期挑战者不是由量角器聚焦的,因此日期未发送到输入字段。

尝试通过首先单击元素然后通过键来聚焦元素。

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

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

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

希望这有帮助

相关内容

最新更新