Protractor - unknown error: angular is not defined when using by.model
Protractor - unknown error: angular is not defined when using by.model
我正在为我的 Angular 组件编写一些量角器测试,当我尝试使用 by.model 到 select 输入时,一直收到错误 "unknown error: angular is not defined"元素.
这很奇怪,因为如果我这样做,它可以正常工作并通过:
it('should have an input element for searching', () => {
var inputElement = element(by.model('searchText');
expect(inputElement).toBeDefined();
});
但是当我尝试做这样的事情时它失败了 angular 未定义的错误:
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 在页面上定义 angular?
谢谢
by.model
在 Angular 中不受支持(angular2、angular4 和 on)。
推荐的替代方案是 by.css()
。
根据angular/protractor's current readme:
Protractor works with AngularJS versions greater than 1.0.6/1.1.4, and is compatible with Angular applications. Note that for Angular apps, the by.binding()
and by.model()
locators are not supported. We recommend using 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
我正在为我的 Angular 组件编写一些量角器测试,当我尝试使用 by.model 到 select 输入时,一直收到错误 "unknown error: angular is not defined"元素.
这很奇怪,因为如果我这样做,它可以正常工作并通过:
it('should have an input element for searching', () => {
var inputElement = element(by.model('searchText');
expect(inputElement).toBeDefined();
});
但是当我尝试做这样的事情时它失败了 angular 未定义的错误:
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 在页面上定义 angular?
谢谢
by.model
在 Angular 中不受支持(angular2、angular4 和 on)。
推荐的替代方案是 by.css()
。
根据angular/protractor's current readme:
Protractor works with AngularJS versions greater than 1.0.6/1.1.4, and is compatible with Angular applications. Note that for Angular apps, the
by.binding()
andby.model()
locators are not supported. We recommend usingby.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