Ho alcuni test scritti usando il goniometro per l'app angular.js. Sto usando il modello di progettazione Page Objects
e lì ho alcuni metodi che consentono di accedere ad altre pagine facendo clic su collegamenti e pulsanti. e subito dopo chiamo browser.waitForAngular()
.Goniometro - Dove usare browser.waitForAngular()
Pagina oggetto
module.exports = function() {
this.companyNameLink = element(by.id('viewCompany'));
this.newMeetingButton = element(by.id('newMeetingButton'));
this.createNewGeneralMeeting = function() {
this.newMeetingButton.click();
browser.waitForAngular();
};
this.goToCompanyPage = function() {
this.companyNameLink.click();
browser.waitForAngular();
};
};
e in alcuni file spec io uso questa pagina oggetto come questo ..
var DashboardPage = require('../dashboardPageObject.js');
dashboardPage = new DashboardPage();
...
dashboardPage.goToCompanyPage();
Ma il problema è a volte ho l'errore angular could not be found on the window
e le mie prove falliscono . Il più delle volte i test sono eseguiti. Questo problema è casuale. La mia domanda è che Devo rimuovere la browser.waitForAngular()
dal metodo oggetto pagina e chiamarlo dopo che faccio la chiamata al metodo come questo ...
Modificato Pagina oggetto
...
this.goToCompanyPage = function() {
this.companyNameLink.click();
};
...
specifica file
dashboardPage.goToCompanyPage();
browser.waitForAngular();
Il numero browser.waitForAngular()
sta causando il problema? Dove devo chiamare lo waitForAngular
ci sono delle buone pratiche su come usare questo?
Ho questo caso d'uso come in, testare le modifiche apportate alla pagina dopo l'aggiornamento. Apporta modifiche -> fai clic su Salva (non causa alcun aggiornamento della pagina) -> Aggiorna -> verifica la pagina ricaricata. In questo caso, l'aggiornamento viene attivato prima che la funzione di salvataggio sia completata causando avvisi inutili del browser sulla pagina. Ho dovuto usare, waitForAngular() prima di attivare l'aggiornamento sulla pagina. –
Bene, se si effettua l'aggiornamento chiamando 'browser.refresh', dovrebbe attendere che l'operazione precedente termini automaticamente. Ho appena guardato il codice e verificato che [lo fa] (https://github.com/angular/protractor/blob/3.0.0/lib/protractor.js#L726) (se non hai disattivato la funzione di sincronizzazione questo è). Forse hai individuato un bug - puoi presentare un problema nella [pagina github del goniometro] (https: // github.com/angular/goniometro/problemi) se questo è il caso. –