Pregunta

Estoy usando NightwatchJS con NodeJS: http://nightwatchjs.org/api

Tengo un cuadro de diálogo modal, que puede o no puede aparecer.Tiene un #close_button que necesita ser hecho clic (si el modal aparece) para continuar.

Me puse el abortOnFailure parámetro de waitForElementPresent a false así que el guión continúa si el modal no aparece.Sin embargo no puedo conseguir que funcione.

Alguna sugerencia?

module.exports = {
    "Test" : function (browser) {
        browser
            .url("http://domain.com/")
            .waitForElementPresent('#close_button', 5000, false, function() {
                this.click('#close_button')
            })
            .setValue('#username', 'test@email.com')
            //more code here
            .end(); //does end() go here or inside .waitForElementPresent() above?
    }
}
¿Fue útil?

Solución

abortOnFailure funciona bien, sin embargo waitForElementPresent tiene un error el momento en el que la devolución de llamada que pasa es que no se llama en el contexto correcto.Que va a ser fijo.

En la media hora que usted puede escribir su prueba como ésta, con la colocación de la click en el exterior, que es la misma cosa y se ve más limpio:

module.exports = {
  "Test" : function (browser) {
    browser
      .url("http://domain.com/")
      .waitForElementPresent('#close_button', 5000, false)
      .click('#close_button')
      .setValue('#username', 'test@email.com')
      //more code here
      .end(); // end() goes here
  }
}

Otros consejos

Me he topado con algo similar, me estaba esperando un iframe para estar presente.He creado una función para cerrar esto:

pageObject función:

Home.prototype.closeIframe = function(browser) {
var self = this;
console.log('Checking for iframe');
this.browser
        .isVisible(iframeSelectors.iframe, function(result) {
            if (result.value === true) {
                self.browser
                        .log('iframe visible')
                        .frame(iframeSelectors.name)
                        .waitForElementVisible(iframeSelectors.closeLink)
                        .click(iframeSelectors.closeLink)
                        .assert.elementNotPresent(iframeSelectors.iframe)
                        .frame(null)
                        .pause(2000); //allow for proper frame switching
            } else {
                console.log('iframe is not visible');
            }
        });

return this;

En mi prueba me espere a que la página de cargar completamente antes de ejecutar la función anterior.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top