我有以下代码
<div class="btn btn-success form-control ng-binding" ng-click="test(uid)">
First
</div>
<div class="btn btn-success form-control ng-binding" ng-click="test(uid)">
Second
</div>
<div class="btn btn-success form-control ng-binding" ng-click="test(uid)">
Third
</div>
我如何基于ng-click迭代元素以检查Protractor中的特定文本值(第一个或第二个或第三个)?我尝试了以下但我未定义uids.length。这有什么不对?
var uids = element.all(by.css('[ng-click="test(uid)"]'));
for(var i=0;i<uids.length;i++)
console.log(uids.get(i).getText());
答案 0 :(得分:3)
问题是element.all()返回ElementArrayFinder
而不是简单的数组。如果查看链接文档,您将看到一些允许您轻松交互该数据结构的函数。我相信您想要使用each()函数,如下所示:
element.all(by.css('[ng-click="test(uid)"]')).each(function(element, index) {
element.getText().then(function (text) {
console.log(text);
});
});
另外值得注意的是,getText()函数与Protractor中的几乎所有函数一样,返回一个promise,因此需要先解析,然后才能访问你真正想要的值。