2015-10-30 14 views
8

Tôi đang chạy ứng dụng Góc và khi thử nghiệm trên thước đo góc click(), tôi không biết khi nào tôi nên giải quyết lời hứa với then().Thước đo, khi nào tôi nên sử dụng sau đó() sau khi nhấp chuột()

Tôi thấy điều này trên thước đo API:

Một lời hứa rằng sẽ được giải quyết khi lệnh nhấp chuột đã hoàn thành.

Vì vậy, tôi có nên sử dụng click().then() trong mỗi click không?

Trả lời

7

Vì vậy, tôi có nên sử dụng click(). Sau đó() trong mỗi nhấp chuột không?

Chắc chắn là không.

Nó không cần thiết bởi vì thước đo/WebDriverJS có cơ chế này được gọi là "Control Flow" mà về cơ bản là một danh sách các lời hứa mà cần phải được giải quyết:

WebDriverJS duy trì một danh sách các lời hứa chờ giải quyết, gọi là dòng điều khiển , để tổ chức thực hiện.

và thước đo chờ kiễu góc một cách tự nhiên và out-of-the-box:

Bạn không còn cần phải thêm chờ đợi và ngủ để thử nghiệm. Thước đo có thể tự động thực hiện bước tiếp theo trong thử nghiệm của bạn khi trang web hoàn tất các tác vụ đang chờ xử lý, do đó bạn không phải lo lắng về việc đang chờ thử nghiệm và trang web của bạn đồng bộ hóa.

nào dẫn đến một mã thử nghiệm khá thẳng về phía trước:

var elementToBePresent = element(by.css(".anotherelementclass")).isPresent(); 

expect(elementToBePresent.isPresent()).toBe(false); 
element(by.css("#mybutton")).click(); 
expect(elementToBePresent.isPresent()).toBe(true); 

Đôi khi dù, nếu bạn gặp vấn đề về đồng bộ hóa/thời gian, hoặc ứng dụng của bạn được kiểm tra là không kiễu góc, bạn có thể giải quyết nó bằng cách giải quyết các click() một cách rõ ràng với then() và tiếp tục bên trong nhấp chuột callback:

expect(elementToBePresent.isPresent()).toBe(false); 
element(by.css("#mybutton")).click().then(function() { 
    expect(elementToBePresent.isPresent()).toBe(true); 
}); 

Ngoài ra còn có Explicit Waits để giải cứu trong những trường hợp này, nhưng nó không có liên quan ở đây.

+1

Tương lai của luồng điều khiển được đề cập đến. "Trong tương lai, luồng điều khiển đang bị xóa" [Luồng điều khiển WebDriver] (https://github.com/angular/protractor/blob/master/docs/control-flow.md#disabling-the-control -flow) –

1

Có, bạn nên làm như vậy. Có thể ngay bây giờ không cần thiết, nhưng có thể trong các phiên bản tiếp theo. Vì vậy, nếu click trả lại lời hứa, bạn nên sử dụng nó.

http://www.protractortest.org/#/api?view=webdriver.WebElement.prototype.click

+0

Tương lai của luồng điều khiển đang được đề cập đến. "Trong tương lai, luồng điều khiển đang bị xóa" [Dòng điều khiển WebDriver] (https: // github.com/góc/thước đo/blob/master/docs/control-flow.md # disable-the-control-flow) –

Các vấn đề liên quan