当我尝试使用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在页面上定义角度?
由于
答案 0 :(得分:9)
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