Nightwatch:将 xpath 分离到另一个文件中

Nightwatch: Separate xpath into another files

如何将xpath分离成单独的文件并在nightwatch自动化测试中使用?

编辑: 我 运行 一个页面对象模式示例,发现了一些错误。 错误:类型错误: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()

    }


};

因此假设页面对象定义在 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

的文件

pages/main.js

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

然后你测试如下

tests/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

我创建了一个示例存储库供您克隆并查看以上内容

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

PS:重要的是要注意 var page = browser.page.main(); 意味着它将从此处的 pages 文件夹加载 main.js