在Nightwatch JS中使用pages对象

All*_*ate 12 javascript nightwatch.js

我正在使用夜视仪"0.8.6".根据页面上的文档,我创建了一个pages/login.js文件并将目录添加到配置文件中:

module.exports = {
  url: function() {
    return this.launchUrl;
  }
};
Run Code Online (Sandbox Code Playgroud)

文档提到this.api,但那不是客户端/浏览器的属性. this.launchUrl然而,显然是可用的.

我更改了现有测试以使用它:

module.exports = {
  'Login page has a login button' : function (browser) {
    browser
      .url(browser.page.login().url())
      .waitForElementVisible('body', 10000)
      .assert.containsText('button', 'SIGN IN')
      .end();
  }
}
Run Code Online (Sandbox Code Playgroud)

测试现在失败了..url尝试打开selenium data:,,而不是this.launchUrl的值,即localhost:3000.

页面对象显然是在登录测试的上下文中进行评估的,因此页面对象中的这个应该有this.launchUrl.潜入源代码我看到混合中还有页面包装器对象,不知何故.

如何在0.8.6中正确创建和使用页面对象?

小智 6

我想你可以尝试添加一个var来调用login.js页面.像这样:

module.exports = {
  'Login page has a login button' : function (browser) {

    var LoginPage = browser.page.login();
        LoginPage.navigate();

        LoginPage
         .waitForElementVisible('body', 10000)
         .assert.containsText('button', 'SIGN IN')
         .end();
  }
}
Run Code Online (Sandbox Code Playgroud)