2015-05-05 44 views
6

Tôi đang làm việc trên một trang web sử dụng Knockout. Tôi thiết lập thước đo góc sau khi nhìn thấy this post about using Protractor on non-Angular pages, nhưng nó không có vẻ như thước đo góc có thể 'thấy' bất kỳ yếu tố nào là một phần của thành phần KO.Ứng dụng Knockout có thể được kiểm tra bằng thước đo góc không?

describe('a simple test', function() { 
    it('works', function() { 
    browser.ignoreSynchronization = true; 
    browser.get('profile'); 

    expect(browser.getTitle()).toEqual('Title'); // this passes (outside KO) 

    expect(element(by.id('ko-component')).getText()).toEqual('Hello World!'); // this fails (inside KO) 
    }); 
}); 

Kết quả xác nhận thứ hai trong lỗi này, mặc dù yếu tố chắc chắn là trong HTML.

Message: 
NoSuchElementError: No element found using locator: By.id("ko-component") 

Nếu tôi không thể sử dụng thước đo góc, thì đề xuất cho các khung kiểm tra e2e khác được hoan nghênh.

Trả lời

9

protractor về cơ bản là một trình bao bọc xung quanh WedDriverJS (liên kết selen javascript). protractor làm cho việc kiểm tra trang AngularJS dễ dàng hơn và tự nhiên hơn, biết khi nào góc được giải quyết và một trang đã sẵn sàng để tương tác và giới thiệu một số định vị góc cụ thể.

Nói cách khác, bạn chắc chắn có thể kiểm tra knockout trang với protractor. Trong trường hợp này, bạn cần phải explicitly wait cho đến khi các yếu tố ko-component hiện diện bằng cách sử dụng presenceOfExpected Condition:

var EC = protractor.ExpectedConditions; 
var e = element(by.id('ko-component')); 
browser.wait(EC.presenceOf(e), 10000); 

expect(e.getText()).toEqual('Hello World!'); 
+0

Cảm ơn bạn! Điều này làm việc hoàn hảo. – chinaowl

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