夜视仪通用步骤定义,在页面对象中没有重复元素

时间:2016-12-13 14:49:21

标签: nightwatch.js pageobjects

我有一个问题:我有一个这样的步骤:

this.Then(/^I click "([^"]*)" element$/, (browser, btn) => {
    var main = browser.page.main_page();

    main
      .waitForElementVisible('@' + btn, 3000)
      .assert.visible('@' + btn)
      .click('@' + btn)
});

我不想为其他页面对象模型复制相同的步骤定义。当我运行测试时,是否有可能创建/构建一个大的页面对象,或者使该页面对象包含所需的元素,而不是在不同的页面对象模型文件中输入它的时间。

1 个答案:

答案 0 :(得分:0)

解决方案1:

this.Then(/^I click "([^"]*)" element from "([^"]*)"$/, (browser, btn, page_name) => {
    var page_obj = browser.page[page_name]();

    page_obj
      .waitForElementVisible('@' + btn, 3000)
      .assert.visible('@' + btn)
      .click('@' + btn)
});

解决方案2:

创建给定的步骤定义和步骤如下:

this.Given(/^I use the "([^"]*)" page object$/, function(browser, page) {

    var p = browser.page[page] 
    if (p) {
      browser.__page = p();
    }
});

this.Then(/^I click "([^"]*)" element$/, (browser, btn) => {
    var main = browser.__page;

    main
     .waitForElementVisible('@' + btn)
     .assert.visible('@' + btn)
     .click('@' + btn)
});