我想通过第二列值从表中选择特定元素(我删除了呈现的空白),找到该元素后,我想单击它(返回值为true)。我已经尝试过了,但是它没有单击它,只是找到了元素。
我要选择的该字段的html代码如下:
<table ng-table="tableParams" id="Panel" class="tbl-option-list" template-pagination="directives/controls/Pager/Pager.html">
<caption translate>Orders</caption>
<tr id="Panel">
<!-- 1 -->
<th class="fixed-width-glyphicon"></th>
<!-- 2 -->
<th translate>Identifier</th>
</tr>
<tr ng-repeat="item in $data track by $index" ng-class="{'active-bg': order.$selected}" ng-click="changeSelection(order, getRowActions(order))">
<!-- 1 -->
<td class="fixed-width-glyphicon">
<div class="fixed-width-glyphicon">
{{item.priority.toUpperCase()[0]}}
</div>
</td>
<!-- 2 -->
<td>{{item.identifierCode}}</td>
</tr>
</table>
量角器的select命令为:
var deferred = protractorData.p.promise.defer();
element.all(by.repeater('item in $data track by $index')).filter(function(row) {
row.getText().then(function(txt) {
txt = txt.replace(/\s/g, '');
var found = txt.split('ID0001');
return found.length > 1;
});
}).then(function(elem) {
deferred.fulfill(elem[0]);
});
return deferred.promise;
}
我收到以下错误:
TypeError:无法调用未定义的方法“ click”。
最佳答案
似乎该元素没有返回被单击。请尝试下面的示例,单击以查看它是否在过滤器函数中正确运行,而不是使用promises返回元素-
element.all(by.repeater('item in $data track by $index')).filter(function(row) {
//return found element
}).then(function(elem) {
elem[0].click(); //click it here
});
或按以下方式返回元素,然后在测试规范中单击它。这是如何做 -
var clickElement = element.all(by.repeater('item in $data track by $index')).filter(function(row) {
//return found element
}).then(function(elem) {
return elem[0]; //return the element
});
return protractor.promise.fulfilled(clickElement);
希望能帮助到你。