量角器:如何单击页面对象中的所有删除按钮

时间:2014-09-17 16:45:24

标签: protractor

我有一个包含3行数据和3个删除按钮的表。我想删除所有数据行,所以我试图在我的页面对象中编写一个方法来执行此操作...这应该是一个快照,但我不能让它工作。我试着这样做:

this.rows = element.all(by.repeater('row in rows'));

this.deleteAllFriends = function() {
    this.rows.each(function(row) {
        row.$('i.icon-trash').click();
    })
};

但这会引发错误:

Error: Index out of bound. Trying to access index:2, but locator: by.repeater("row in rows") only has 1 elements

很明显,索引量角器预计接下来不再存在,因为它已被删除。 我该如何解决这个问题?

这也不起作用并抛出相同的错误:

this.deleteButtons = $$('i.icon-trash');

this.deleteAllFriends = function() {
    this.deleteButtons.each(function(button) {
        button.click();
    });
};

这也不起作用......

this.deleteAllFriends = function() {
    while(this.deleteButton.isDisplayed()) {
        this.deleteButton.click();
    }
};

2 个答案:

答案 0 :(得分:8)

今天version >= 1.3.0 of Protractor你现在能够do this at once

$$('i.icon-trash').click();
  

feat(量角器):允许ElementArrayFinder的高级功能

答案 1 :(得分:3)

我终于明白了......

this.deleteButtons = $$('i.icon-trash'); // locator

this.deleteAllFriends = function() {
    var buttons = this.deleteButtons;

    buttons.count().then(function(count) {
        while(count > 0) {
            buttons.first().click();
            count--;
        }
    })
};