tutorial español javascript angularjs testing protractor angularjs-e2e

javascript - español - Transportador-Dónde usar browser.waitForAngular()



protractor typescript (3)

De la documentation del transportador:

Indique a webdriver que espere hasta que Angular haya terminado de renderizarse y no tenga llamadas pendientes de $ http o $ timeout antes de continuar. Tenga en cuenta que Protractor aplica automáticamente este comando antes de cada acción de WebDriver.

No deberías llamar a esto en absoluto y no puedo pensar en un caso válido en el que debas hacerlo.

Tengo algunas pruebas escritas usando el transportador para la aplicación angular.js. Estoy usando el patrón de diseño de Page Objects y tengo algunos métodos para navegar a otras páginas haciendo clic en los enlaces y botones. y poco después estoy llamando browser.waitForAngular() .

Objeto de página

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

Y en algún archivo de especificaciones uso este objeto de página como este ...

var DashboardPage = require(''../dashboardPageObject.js''); dashboardPage = new DashboardPage(); ... dashboardPage.goToCompanyPage();

Pero el problema es que a veces angular could not be found on the window encontrar el angular could not be found on the window error de angular could not be found on the window y mis pruebas fallan. La mayoría de las veces se ejecutan las pruebas. Este problema es aleatorio. Mi pregunta es si debo eliminar el browser.waitForAngular() del método de objeto de página y lo llamo después de realizar la llamada al método de esta manera ...

Objeto de página modificado

... this.goToCompanyPage = function () { this.companyNameLink.click(); }; ...

Archivo de especificaciones

dashboardPage.goToCompanyPage(); browser.waitForAngular();

¿ browser.waitForAngular() causando el problema? ¿Dónde debo llamar a waitForAngular ¿Existe alguna práctica recomendada sobre cómo usar esto?


En lugar de utilizar waitForAngular , debe manejar la promesa devuelta haciendo click .

Por lo tanto, en primer lugar, los métodos del objeto de su página deben devolver esas promesas:

this.goToCompanyPage = function () { return this.companyNameLink.click(); };

Entonces, su uso real de este método puede verse así:

dashboardPage.goToCompanyPage().then(function() { // this will be executed when the click is done. // No need for any waitForAngular. });

Para ver algunos ejemplos adicionales, consulte la versión de mi estado / objeto de página del conjunto de pruebas Angular PhoneCat Protractor.


Estoy usando browser.WaitForAngular () antes de navegar a una página específica a través de browser.Url De lo contrario, aparece un error en el registro del navegador para el que estoy haciendo la prueba.