重新使用Selenium WebDriver的浏览器会话进行Nightwatch.js测试

Dav*_*d C 5 selenium automated-tests selenium-webdriver nightwatch.js

我需要编写多个测试(例如登录测试,登录测试时使用应用程序,注销测试等)并且需要将它们全部放在单独的文件中.我遇到的问题是在每次测试之后,在下一个测试运行开始时,新的浏览器会话启动并且由于新会话而不再登录,所以我的所有测试都将失败,除了登录测试.

那么,有没有办法使用相同的浏览器会话顺序运行我的所有测试而不必复制我的登录代码?对不起,如果这是一个转贴,但我搜索和研究,没有找到任何答案.

或者,有没有办法以某种方式链接测试文件?就像有一个你运行的文件只调用所有其他测试文件?

Dav*_*d C 8

使用此函数将文件链接在一起:

extend = function(target) {
    var sources = [].slice.call(arguments, 1);
    sources.forEach(function (source) {
        for (var prop in source) {
            target[prop] = source[prop];
        }
    });
    return target;
}
Run Code Online (Sandbox Code Playgroud)

并将文件添加到此主文件,如下所示:

require("./testName.js");
module.exports = extend(module.exports,testName);
Run Code Online (Sandbox Code Playgroud)

并使测试文件看起来像这样:

testName = {
    "Test" : function(browser) {

        browser
            // Your test code
    }
};
Run Code Online (Sandbox Code Playgroud)

允许我有一个文件可以链接所有测试,并保持整个时间相同的浏览器会话.它按照您在主文件中所需的顺序运行测试,如果您不调用browser.end()直到最后一次测试完成,它将使用一个浏览器窗口进行所有测试.