NightwatchJS .waitForElementPresent abortOnFailure无效

时间:2014-02-26 02:15:00

标签: javascript node.js automated-tests nightwatch.js

我正在使用带有NodeJS的NightwatchJS:http://nightwatchjs.org/api

我有一个模态对话框,可能出现也可能不出现。它有#close_button需要点击(如果出现模态)继续。

我将abortOnFailure的{​​{1}}参数设置为waitForElementPresent,以便在模式未显示时脚本继续。但是我无法让它发挥作用。

有什么建议吗?

false

2 个答案:

答案 0 :(得分:0)

abortOnFailure工作正常,但是waitForElementPresent现在有一个错误,你传递的回调没有在正确的上下文中调用。这将是固定的。

与此同时,您可以像这样编写测试,将click放在外面,这是相同的,看起来更干净:

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

答案 1 :(得分:0)

我碰到了类似的东西,我正在等待一个iframe出现。我创建了一个实际关闭它的函数:

pageObject函数:

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;

在我的测试中,我在执行上述功能之前等待页面完全加载。