量角器 - 未知错误:使用by.model时未定义角度

时间:2017-06-15 03:52:38

标签: angular unit-testing webpack protractor end-to-end

当我尝试使用by.model来选择输入元素时,我正在为我的Angular组件编写一些量角器测试,并继续收到错误“未知错误:未定义角度”。

它很奇怪,因为如果我这样做它可以正常工作:

it('should have an input element for searching', () => {
    var inputElement = element(by.model('searchText');
    expect(inputElement).toBeDefined();
});

但是当我尝试做类似这样的事情时,它会因角度未定义错误而失败:

it('should filter the search text', () => {
     var inputElement = element(by.model('searchText');
     expect(inputElement).toBeDefined();

     inputElement.clear()
     inputElement.click();
     inputElement.sendKeys('ICBC');

     var tableLengthRow = element.all(by.css('.animate-repeat').count();
     expect(tableLength).toBe(1);
});

如果我更换此行:

var inputElement = element(by.model('searchText');

这一个:

var inputElement = element.all(by.tagName('input')).get(0);

并且在测试通过时保留其余部分。

有谁知道为什么上面的第一个测试适用于by.model而不是第二个我实际点击该元素的测试?

然后如何使用Webpack和npm在页面上定义角度?

由于

1 个答案:

答案 0 :(得分:9)

Angular(angular2,angular4和on)不支持

by.model

推荐的替代方案是by.css()

根据angular/protractor's current readme

  

量角器适用于大于1.0.6 / 1.1.4的AngularJS版本,并且与Angular应用程序兼容。请注意,对于Angular应用程序,不支持by.binding()by.model()定位器。我们建议您使用by.css()

Angular Guide - E2E Tests的替代方案示例:

Previous code               New code         Notes
by.model('$ctrl.query')     by.css('input')  The model matcher relies on AngularJS ng-model
by.model('$ctrl.orderProp') by.css('select') The model matcher relies on AngularJS ng-model