我有一个问题:我有一个这样的步骤:
this.Then(/^I click "([^"]*)" element$/, (browser, btn) => {
var main = browser.page.main_page();
main
.waitForElementVisible('@' + btn, 3000)
.assert.visible('@' + btn)
.click('@' + btn)
});
我不想为其他页面对象模型复制相同的步骤定义。当我运行测试时,是否有可能创建/构建一个大的页面对象,或者使该页面对象包含所需的元素,而不是在不同的页面对象模型文件中输入它的时间。
答案 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)
});