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.
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) –