在Nightwatch中,`.url()`会阻塞断言太长时间

时间:2017-10-22 06:14:46

标签: selenium selenium-webdriver webdriver nightwatch.js

使用browser.url()http://nightwatchjs.org/api/#url)进行导航似乎导致WebDriver客户端等到页面完全加载 - 但是我想在此之前做出断言。

"Shows splash screen for a few seconds": function(client) {
  client
    .url(client.testURL)
    // at this point, the splash has already come and gone, so
    // this next command times out
    .waitForElementVisible('#splash img', 10000)
    .waitForElementNotVisible('#splash', 10000);
},

这可能吗?我认为我唯一的另一种选择是在测试场景中禁用启动。

我在Firefox v45上运行这些测试。

1 个答案:

答案 0 :(得分:1)

您可以通过设置Firefox配置文件首选项来执行此操作,如下所示

https://github.com/nightwatchjs/nightwatch/issues/748

您需要设置的首选项webdriver.load.strategyunstable。但这意味着等待页面加载现在是您的所有业务

var FirefoxProfile = require('firefox-profile');

function setProfile(browser, profile, callback) {
    profile.encoded(function (encodedProfile) {
        browser.options.desiredCapabilities['firefox_profile'] = encodedProfile;
        callback();
    });
}

function setFirefoxProfile(browser, done) {
    var profile = new FirefoxProfile();
    profile.setPreference('webdriver.load.strategy', 'unstable');

    setProfile(browser, profile, done);
}


// and in my test module
before: function (browser, done) {
    setFirefoxProfile(browser, done);
}