我正在尝试使用Protractor进行一些终端2端测试,我遇到了以下问题:
我有这个HTML:
<div ng-controller="Ctrl">
....
<tr ng-repeat="row in service.data">
<td>
{{row.name}}
</td>
<td>
<input type="checkbox" ng-modal="row.checked"/>
</td>
</tr>
</div>
在我的角度,我有以下js:
.controller('Ctrl', function($scope){
$http.get('/api/service/').success(function(res){
$scope.service.data = res.data;
});
});
我无法找到从ng-repeat
生成的表格行,因为在页面加载时它们不存在。
我的测试是使用此代码:
var items = element.all(by.repeater('row in service.data')).then(function(row){
// But row is always []. It doesnt wait for $http to finish
});
我正在尝试创建一个测试用例来检查复选框并单击另一个操作按钮,但是我需要Protractor等待$ http调用完成并且angular首先呈现ng-repeat
。
答案 0 :(得分:1)
我找到了问题!
有两个问题需要解决!
1.如果您的角应用不在身体中,请务必在conf.js中定义rootElement属性!
exports.config = {
...
rootElement : '.element' // css selector to the element that contains ng-app
}
2.I转了browser.ignoreSynchronization = true;在beforeEach中,忘了为每个测试用例重新打开它。
beforeEach(function(){
browser.ignoreSynchronization = true;
....
});
it('case', function(){
browser.ignoreSynchronization = false;
....
});