量角器找不到Angular日期选择器

时间:2019-02-15 14:48:44

标签: html angular selenium protractor automated-tests

我有一个复杂的日期选择器,但无法捕获。看起来像:

这是我尝试过的:

element(by.id('submissionDate-calendar')).sendKeys('28.01.2019');

这是实际的HTML:

<input type="text" name="submissionDate" ng-required="$ctrl.isRequired()" ng-disabled="$ctrl.ngDisabled" ng-model="$ctrl.editableDate" ng-click="$ctrl.toggleVisibility()" id="submissionDate" class="form-control ng-pristine ng-empty ng-invalid ng-invalid-required ng-valid-min-date ng-valid-max-date ng-valid-weekday ng-valid-holidays ng-touched"
  ng-readonly="!$ctrl.ngDisabled" required="required" readonly="readonly" style="">

但是我收到一个错误,内容为:

  

找不到元素

2 个答案:

答案 0 :(得分:1)

browser.waitForAngular

ProtractorBrowser.prototype.waitForAngular指示WebDriver等待Angular完成渲染并且没有未完成的$http$timeout调用,然后继续操作,您需要保持此启用状态。

现在,由于该元素是一个Angular元素,因此需要诱使 waiter 来使元素可点击,并且您可以使用任一以下解决方案:

  • cssSelector

    element(by.css('input.form-control.ng-valid-min-date.ng-valid-max-date.ng-valid-weekday.ng-valid-holidays#submissionDate')).sendKeys('28.01.2019');
    
  • xpath

    element(by.xpath('//input[@class="form-control ng-pristine ng-empty ng-invalid ng-invalid-required ng-valid-min-date ng-valid-max-date ng-valid-weekday ng-valid-holidays ng-touched" and @id="submissionDate"]')).sendKeys('28.01.2019');
    

答案 1 :(得分:0)

听起来应该使用element(by.id('submissionDate')),因为html文件中的id看起来像这样。
如果不知道by.id不起作用,则可以通过CSS进行尝试:

element(by.css('.input-group.datepicker.hide-day.ng-scope input')).sendKeys('28.01.2019');