当我在页面对象中定义部分时,我无法使 .navigate() 工作

I can't make .navigate() work when I define sections in my page object

使用 Nightwatch 我创建了一个看起来很像这样的页面对象

module.exports = {

    url() {
        return `${this.api.launchUrl}/mypage`;
    },

    sections: {

        main: {

            selector: '.foo',

            elements: {
                bar: '[name="baz"]',
            },
        },
    },
};

在我测试的 before() 函数中,我这样调用它

module.exports = {

    before(browser) {
        const page = browser.page.buy.myPageObject();
        page.navigate();
        page.sections.main.waitForElementVisible('@bar');
    },

    (...)
};

迎接我的是完全的沉默。没有错误记录,没有浏览器 window 打开,一段时间后进程静默退出。

现在,如果我将页面对象更改为不使用部分:

module.exports = {

    url() {
        return `${this.api.launchUrl}/mypage`;
    },

    //sections: {

    //    main: {

    //        selector: '.foo',

            elements: {
                bar: '[name="baz"]',
            },
    //    },
    //},
};

并将测试中的相应行更改为 page.waitForElementVisible('@bar'); 我的测试运行正常。

除了 docs 中的 sections 之外,我找不到任何关于我不能使用 url() 的提及所以我的问题是:我在这里遗漏了一些明显的东西吗?这是我不该做的事吗?

如果我做错了什么,我至少会收到某种错误消息。周边代码没有语法错误,被eslint解析成功

进一步挖掘表明实际问题是无法在部分上使用命令。

github.

上有一个标记为增强的未解决问题

长话短说,解决方法是

    const selector = page.section.main.selector;
    page.waitForElementVisible(selector);

现在这不是 "feature-equivalent",因为它只是等待该部分出现,但这没关系,测试可以检查输入是否确实存在。之前等待的重点是无论如何都要等待页面渲染。