2015-05-05 11 views
6

Sto lavorando a una pagina Web che utilizza Knockout. Ho impostato Goniometro dopo aver visto this post about using Protractor on non-Angular pages, ma non sembra che Goniometro possa 'vedere' qualsiasi elemento che fa parte di un componente KO.È possibile testare un'app Knockout con Goniometro?

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

La seconda asserzione genera questo errore, anche se l'elemento è decisamente nell'HTML.

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

Se non riesco a utilizzare il goniometro, i suggerimenti per altri framework di test di e2e sono i benvenuti.

risposta

9

protractor è fondamentalmente un involucro intorno a WedDriverJS (selenio di selenio javascript). protractor rende la pagina di prova AngularJS più facile e più naturale, sapendo quando l'angolare è sistemata e una pagina è pronta per essere interagita con e introducendo diversi localizzatori angolari specifici.

In altre parole, è possibile testare definitivamente le pagine knockout con protractor. In questo caso, è necessario explicitly wait finché l'elemento ko-component è presente utilizzando 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

Grazie! Questo ha funzionato perfettamente. – chinaowl