使用POM Nightwatch确认网址

时间:2018-02-01 19:05:18

标签: selenium nightwatch.js pageobjects

一般是夜视仪和js的新手,我正在努力弄清楚如何使用pom模式验证网址。我知道这是错的。任何建议都非常感谢,包括我rtfm的有用链接,因为我正在努力寻找有力的pom nightwatch示例。

test.js

module.exports = {
    "tags": ['sanity'],
    'confirm navigation to example.com' : function (client) {
        var landingPage = client.page.landing();
        landingPage.navigate();
        landingPage.confirmOnLandingPage();
        client.end();
    }
};

page.js

var landingCommands = {
    navigate:function(){
        url: 'example.com/'
    },

    confirmOnLandingPage:function(){
        this.expect.element('body')
        .to.be.present.before(1000)
        .url(function(result) 
        {
            this.assert.equal(result.value, 'example.com/', 'On Landing Page.')
        });
    }
}        
  

正在运行:确认导航到example.com
  ✖TypeError:   this.expect.element(...)。to.be.present.before(...)。url不是   功能   在Page.confirmOnLandingPage(/Users/Home/Development/NWQA/pages/page.js:9:10)       在Object.confirm导航到example.com(/Users/Home/Development/NWQA/tests/test.js:7:21)

     

失败:1次错误(18ms)

1 个答案:

答案 0 :(得分:2)

运行.expect后,您打破Nightwatch命令链并启动Expect.js链,以便在调用this.expect.element('body').to.be.present.before(1000)后获得Expect.js对象,而不是Nightwatch浏览器对象。

要修复,只需启动新链并将this.url调用更改为this.api.url,因为页面对象中没有url()

confirmOnLandingPage: function(){
    this.expect.element('body').to.be.present.before(1000);

    this.api.url(function(result) 
    {
        this.assert.equal(result.value, 'example.com/', 'On Landing Page.')
    });
}

<强>更新

我刚注意到你错误地为你的页面对象声明了URL。 navigate是内部函数,您只需要提供url属性:

var landingCommands = {
    url: 'example.com/',

    ...
};