2015-05-05 19 views
6

Pracuję na stronie internetowej, która używa Knockout. Ustawiłem kątomierz po zobaczeniu this post about using Protractor on non-Angular pages, ale nie wygląda na to, że Kątomierz może "zobaczyć" jakiekolwiek elementy, które są częścią komponentu KO.Czy aplikacja Knockout może być testowana z kątomierzem?

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) 
    }); 
}); 

Drugie asercja powoduje ten błąd, mimo że element jest zdecydowanie w kodzie HTML.

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

Jeśli nie mogę używać kątomierza, mile widziane są sugestie dotyczące innych frameworków testowania e2e.

Odpowiedz

9

protractor to w zasadzie opakowanie około WedDriverJS (wiązania selenu w javascript). protractor sprawia, że ​​testowanie strony AngularJS staje się łatwiejsze i bardziej naturalne, wiedząc, że kąt jest ustalony i strona jest gotowa do interakcji oraz wprowadza kilka lokalizatorów o określonym kształcie kątowym.

Innymi słowy, możesz zdecydowanie przetestować strony knockout z protractor. W tym przypadku trzeba explicitly wait aż element ko-component jest obecny przy użyciu 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

Dziękujemy! To działało idealnie. – chinaowl

Powiązane problemy