Question

Je suis en utilisant NightwatchJS avec NodeJS: http://nightwatchjs.org/api

J'ai une boîte de dialogue modale, qui peut ou peut ne pas apparaître.Il a un #close_button qui doit être cliqué (si l'modale apparaît) pour continuer.

J'ai mis le abortOnFailure paramètre de waitForElementPresent pour false ainsi, le script continue si l'modal n'apparaît pas.Cependant, je peux pas le faire fonctionner.

Toutes les suggestions?

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?
    }
}
Était-ce utile?

La solution

abortOnFailure fonctionne très bien, cependant waitForElementPresent a un bug maintenant, dans lequel la fonction de rappel, vous avez passé, il ne s'appelle pas dans le bon contexte.Qui sera fixé.

En attendant vous pouvez écrire votre essai de ce genre, avec la mise en place de la click à l'extérieur, qui est la même chose et semble plus propre:

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

Autres conseils

Je suis tombé sur quelque chose de similaire, j'ai été en attente pour un iframe à être présent.J'ai créé une fonction pour fermer effectivement c':

pageObject fonction:

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;

Dans mon test, j'attends la page pour charger complètement avant l'exécution de la fonction ci-dessus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top