定义部分

有时定义页面部分很有用。部分执行两个操作

  • 在页面下提供命名空间级别
  • 提供元素级别的嵌套,以便在部分中定义的任何元素都是其父部分在 DOM 中的后代

声明部分

您可以使用 sections 属性创建部分

nightwatch/pages/samplePage.js
module.exports = {
  sections: {
    menu: {
      selector: '#gb',
      elements: {
        mail: {
          selector: 'a[href*="mail"]'
        },
        images: {
          selector: 'a[href*="imghp"]'
        }
      }
    }
  }
};

在测试中使用部分

您的测试将按如下方式使用它

tests/sampleTest.js
describe('sample test with page objects', function() {
  it('Test', function (browser) {
    var google = browser.page.google();
    google.expect.section('@menu').to.be.visible;
    
var menuSection = google.section.menu; menuSection.expect.element('@mail').to.be.visible; menuSection.expect.element('@images').to.be.visible;
menuSection.click('@mail');
browser.end(); }); });

请注意,部分上的每个命令和断言(除了 expect 断言)都会返回该部分以进行链接。如果需要,您可以将部分嵌套在其他部分下以创建复杂的 DOM 结构。

嵌套页面对象部分

nightwatch/pages/samplePage.js
module.exports = {
  sections: {
    menu: {
      selector: '#gb',
      elements: {
        mail: {
          selector: 'a[href*="mail"]'
        },
        images: {
          selector: 'a[href*="imghp"]'
        }
      },
      sections: {
        apps: {
          selector: 'div.gb_pc',
          elements: {
            myAccount: {
              selector: '#gb192'
            },
            googlePlus: {
              selector: '#gb119'
            }
          }
        }
      }
    }
  }
};

在您的测试中使用嵌套部分很简单
tests/sampleTest.js
describe('sample test with page objects', function() {
  it('Test', function (browser) {
    var google = browser.page.google();
    google.expect.section('@menu').to.be.visible;
    
var menuSection = google.section.menu; var appSection = menuSection.section.apps; menuSection.click('@appSection');
appSection.expect.element('@myAccount').to.be.visible; appSection.expect.element('@googlePlus').to.be.visible;
browser.end(); }); });