2014-09-17 15 views
6

Tôi có một bảng có 3 hàng dữ liệu và 3 nút xóa. Tôi muốn xóa tất cả các hàng dữ liệu và vì vậy tôi đang cố gắng viết một phương thức trong đối tượng trang của tôi để làm như vậy ... điều này sẽ là một snap nhưng tôi không thể làm cho nó hoạt động. Tôi đang cố gắng nó như thế này:Thước đo góc: cách bấm tất cả các nút xóa trong đối tượng trang

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

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

Nhưng điều này ném một lỗi:

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

Vì vậy, rõ ràng, các thước đo chỉ số kỳ vọng tiếp theo là không còn ở đó, bởi vì nó đã bị xóa. Tôi làm cách nào để giải quyết vấn đề này?

này cũng không hoạt động và ném các lỗi tương tự:

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

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

này cũng không hoạt động ...

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

Trong hầu hết các trường hợp, khi bạn đang xóa "tất cả" của một cái gì đó là trong một mảng/danh sách, bạn muốn xóa lùi. Bằng cách này, chỉ mục không bị gián đoạn/thay đổi bởi lần xóa đầu tiên. Đây là một bình luận CHUNG. Tôi không biết thước đo góc, có thể có một cách dễ dàng hơn/sạch hơn để làm điều đó trong trường hợp này - đó là lý do tại sao tôi đăng một bình luận và không phải là một câu trả lời. – DragonYen

Trả lời

8

Với ngày hôm nay version >= 1.3.0 of Protractor bạn hiện có thể do this at once

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

feat(protractor): allow advanced features for ElementArrayFinder

+0

Tôi đã nâng cấp lên 1.3.0 nhưng điều này không hiệu quả đối với tôi. Gọi trực tiếp từ thông số kỹ thuật của tôi và/hoặc đối tượng trang, tôi nhận được: 'LoạiError: Object [object Object] không có phương thức 'click'' – Brine

+0

Bạn có chắc chắn đã nâng cấp không? Làm việc cho bộ thử nghiệm của tôi và tôi vừa thêm một [test case in Protractor source] (https://github.com/angular/protractor/pull/1367/files) để đảm bảo nó hoạt động. –

+0

'thước đo góc - phiên bản // trả về Phiên bản 1.3.0' ... – Brine

2

Cuối cùng tôi figured it out ...

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--; 
     } 
    }) 
}; 
Các vấn đề liên quan