由于AngularJS 1.4:量角器在参数化表

时间:2015-09-01 08:37:34

标签: javascript angularjs protractor ng-bind-html

由于我将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之前正常运行

任何线索都会受到高度赞赏,因为我遇到了这种情况。

0 个答案:

没有答案