由于我将AngularJS升级到1.4版,我的量角器测试用例是KO。 测试KO如下:
var allRows = element.all(by.repeater('row in displayedElts'));
expect(allRows.count()).to.eventually.equal(1);
allRows.first().then(function (row) {
row.element(by.binding('row.label')).then(function (elm1) {
...
}
}
错误消息是:
NoSuchElementError: No element found using locator: by.binding("row.label")
html代码如下:
<table>
<tbody>
<tr ng-repeat-start="row in displayedElts">
<td ng-repeat="col in tableSpec.columns" ng-bind-html="row[col.field] | cldApply:col.filter"></td>
</tr>
</tbody>
</table>
我的tableSpec对象如下:
$scope.tableSpec= {
columns: [
{
field: 'label',
labelKey: 'commons.label',
filter : 'cldNone'
},
...
]
}
过滤器cldApply的代码(如果需要):
filter('cldApply', [ '$log', '$translate', '$sce',
function ($log, $translate, $sce) {
return function (value, filterName, bool1, bool2) {
var ret;
switch(filterName) {
case 'cldNone' :
ret = '' + formatNone(value, bool1);
break;
...
default :
ret = 'unknown filter '+filterName;
break;
}
// ngSanitize to trust the html returned
return $sce.trustAsHtml(ret);
};
}]);
过滤器在显示之前应用trustAsHtml清理代码。
此代码在升级到AngularJS 1.4之前正常运行
任何线索都会受到高度赞赏,因为我遇到了这种情况。