从0.9.19升级到1.1.0似乎会破坏Page对象

时间:2019-05-14 14:42:47

标签: nightwatch.js

我有一个使用以下代码的页面对象:

var MyToolComp = require('./MyToolComponent').MyToolComponent;

var MyToolCommand = {

    get: function (cssLocator, timeout) {
        return new MyToolComp({client: this, locator: cssLocator, timeout: timeout});
    },

    assertMyToolCount: function (expectedMyToolesCount, timeoutMs) {
        console.log('Validate number of MyTool in the page to be [' + expectedMyToolesCount + ']');
        this.waitForElementsCount(this.section.john_container.selector, expectedMyToolesCount, timeoutMs);
        return this;
    },

};

module.exports = {
    commands: [MyToolCommand],

    sections: {
        john_container: {
            selector: '.john_container',
            elements: {
                john_MyTool: {
                    selector: '.john_MyTool'
                },
                header: {
                    selector: '.john_MyTool_header'
                }
            }
        },
        multi_widget: {
            selector: '.john_multi_widget'
        }
    }
};

升级到1.1.0后,我无法在测试中运行以下代码:     var myToolPage = browser.page.myTool();     myToolPage.assertMyToolCount(1);

调试时,我看到myToolPage的变量为“ section”,但没有命令。 如果我删除部分并且只能这样做 module.exports = MyToolCommand;

module.exports = {
    commands: [MyToolCommand]

}

然后我可以跑步 myToolPage.assertMyToolCount(1);

但是它失败了,因为 this.section.john_container.selector 没有定义。

我在做什么错?我找不到任何herehere。我还有其他可以帮助我的内容吗?升级NW时我还应该了解什么? (这是我第一次看到任何与守夜有关的东西,所以我必须随时学习。)

预先感谢:)

1 个答案:

答案 0 :(得分:0)

我解决此问题的方法是替换

module.exports = {
    commands: [MyToolCommand],

    sections: {
        john_container: {
            selector: '.john_container',
            elements: {
                john_MyTool: {
                    selector: '.john_MyTool'
                },
                header: {
                    selector: '.john_MyTool_header'
                }
            }
        },
        multi_widget: {
            selector: '.john_multi_widget'
        }
    }
};

使用

exports.commands = MyToolCommand;
exports.sections = {
        john_container: {
            selector: '.john_container',
            elements: {
                john_MyTool: {
                    selector: '.john_MyTool'
                },
                header: {
                    selector: '.john_MyTool_header'
                }
            }
        },
        multi_widget: {
            selector: '.john_multi_widget'
        }
    };