【问题标题】:Protractor can't find Angular datepicker量角器找不到 Angular 日期选择器
【发布时间】:2019-07-09 17:48:21
【问题描述】:

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

这是我尝试过的:

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="">

但我收到一个 错误,上面写着:

找不到元素

【问题讨论】:

  • 但是你有两个不同的 id 没有?在 js 中 element(by.id('submissionDate-calendar')) 和在 htmlid="submissionDate"

标签: html angular selenium protractor automated-tests


【解决方案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');
    

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 2019-04-02
      • 1970-01-01
      • 2021-10-20
      • 2018-02-01
      • 1970-01-01
      相关资源
      最近更新 更多