我有一个复杂的日期选择器,但无法捕获。看起来像:
这是我尝试过的:
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="">
但是我收到一个错误,内容为:
找不到元素
答案 0 :(得分:1)
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');