我使用量角器在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 && (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);
希望这有帮助