Nightwatch:将xpath分隔为另一个文件

时间:2018-03-21 08:59:55

标签: testing nightwatch.js

如何将xpath分成单独的文件并在夜间表自动化测试中使用它?

编辑: 我运行页面对象模式示例,发现了一些错误。 错误:TypeError:browser.page.url不是函数

请帮助解决这个问题。

module.exports = {
 url: 'http://localhost:63916/Login/Login', 
 elements: {
 username: { 
 selector: '//*[@id="inputName"]', 
 locateStrategy: 'xpath' 
 }
 }
};

module.exports = (function(settings) {
    settings.test_workers = false;

    return settings;

})(require('./nightwatch.json'));

//const data = require('./data.js')


module.exports = {

    'Login' : function (browser) {
        var page = browser.page.url();

        page.navigate()
            .setValue('@username', 'peter')

        browser.end()

    }


};

1 个答案:

答案 0 :(得分:1)

假设页面对象在pages目录中定义。您需要更改nightwatch.conf.js,如下所示

<强> nightwatch.conf.js

module.exports = (function(settings) {
    settings.test_workers = false;
    settings.page_objects_path = "./pages";
    return settings;
})(require('./nightwatch.json'));

您的pages有一个名为main.js的文件

信息页/ main.js

module.exports = {
    url: 'https://gmail.com',
    elements: {
        username: {
            selector: '//*[@id="identifierId"]',
            locateStrategy: 'xpath'
        },
        next: {
            selector: '#identifierNext span',
            locateStrategy: 'css'
        }
    }
};

然后你测试就像下面

<强>测试/ test.main.js

module.exports = {

    'Login' : function (browser) {
        var page = browser.page.main();

        page.navigate()
            .setValue('@username', 'peterlalwani')
            .click('@next')
            .waitForElementNotPresent("@username", 10000);

        browser.saveScreenshot("./so.png")
        browser.end()

    }

};

现在,当您运行它时,它会创建一个so.png

Test output

我创建了一个样本仓库供您克隆并查看上面的

https://github.com/tarunlalwani/nightwatch-page-object-so.git

PS:请务必注意var page = browser.page.main();表示它会从main.js文件夹加载pages