Nightwatch 通用步骤定义,无需复制页面对象中的元素
Nightwatch generic step definitions without duplicationg elements in pageobjects
我有一个问题:我有一个这样的步骤:
this.Then(/^I click "([^"]*)" element$/, (browser, btn) => {
var main = browser.page.main_page();
main
.waitForElementVisible('@' + btn, 3000)
.assert.visible('@' + btn)
.click('@' + btn)
});
我不想为其他页面对象模型复制相同的步骤定义。当我 运行 测试或使此页面对象包含所需元素而不输入它时,是否有可能 create/build 一个大页面对象在不同的页面对象模型文件中乘以时间。
解决方案 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)
});
我有一个问题:我有一个这样的步骤:
this.Then(/^I click "([^"]*)" element$/, (browser, btn) => {
var main = browser.page.main_page();
main
.waitForElementVisible('@' + btn, 3000)
.assert.visible('@' + btn)
.click('@' + btn)
});
我不想为其他页面对象模型复制相同的步骤定义。当我 运行 测试或使此页面对象包含所需元素而不输入它时,是否有可能 create/build 一个大页面对象在不同的页面对象模型文件中乘以时间。
解决方案 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)
});