Protractor 通过 ng-click 迭代

Protractor Iterate through ng-click

我有以下代码

<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());

问题是 element.all() returns an ElementArrayFinder rather than a simple array. If you look at the linked documentation you'll see some functions that allow you to easily interact that data structure. I believe you want to use the each() 函数如下:

element.all(by.css('[ng-click="test(uid)"]')).each(function(element, index) {
  element.getText().then(function (text) {
    console.log(text);
  });
});

另外值得注意的是 getText() 函数,就像 Protractor 中的几乎所有函数一样,returns 一个承诺,因此在您可以访问您真正想要的值之前需要解决。