对于Promise中的循环

时间:2016-06-17 13:51:56

标签: javascript angularjs protractor automated-tests

我正在尝试获取具有btn btn-ok类的元素的数量,然后遍历每个元素。

element.all(by.css('.btn.btn-ok')).count()
  .then(function(count) {
    for (var i = 0; i < count; i++) {
      element.all(by.css(".btn.btn-ok")).get(i).click(); // <-- error!
      element(by.css(".icon-issue-in-active-dropdown")).click();
      element(by.css(".icon-check-round")).click();
    }
  });

但是我收到一条错误,指出无法联系到该行

1 个答案:

答案 0 :(得分:0)

使用eq代替get,前者为您提供jQuery / jqLit​​e对象而不是DOM元素。并使用trigger(在angular的jqLit​​e中称为triggerHandler)。

element.all(by.css('.btn.btn-ok')).count()
  .then(function(count) {
    for(var i = 0; i < count; i++) {
      element.all(by.css(".btn.btn-ok")).eq(i).triggerHandler("click")
      element(by.css(".icon-issue-in-active-dropdown")).triggerHandler("click");
      element(by.css(".icon-check-round")).triggerHandler("click");
   }
});

阅读评论,但澄清angular.element调用jQuery(如果包含它),否则它使用称为jqLite的调低版本。 Here is more detail about this