当我在页面对象

时间:2016-07-14 07:56:01

标签: javascript nightwatch.js

使用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');
    },

    (...)
};

我完全沉默了。没有记录任何错误,没有打开浏览器窗口,一段时间后该过程只是静默退出。

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

module.exports = {

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

    //sections: {

    //    main: {

    //        selector: '.foo',

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

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

我无法在docs中发现除了url()之外我无法使用sections,所以我的问题是:我在这里遗漏了一些明显的东西?这是我不打算做的事吗?

如果我做错了,我至少会期待某种错误信息。周围的代码中没有语法错误,它被eslint成功解析。

1 个答案:

答案 0 :(得分:0)

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

对于github上标记为增强的内容存在一个未解决的问题。

长话短说,解决方法是

Base64 encoder = new org.apache.commons.codec.binary.Base64();
System.out.print(new String(encoder.encode(digestedPwdBytes)) +":");

现在这不是“功能等效”,因为它只是等待该部分存在,但是没关系,测试可以检查输入是否实际存在。之前等待的主要目的是等待页面呈现。