我正在使用带有CucumberJS的Protractor实施E2E测试。我面临的问题是它只执行第一步,并等待直到超时。仅在使用页面对象时出现此问题。
这是我的功能文件:
场景:验证添加事件权重 给定添加优先级程序 并添加入射重量类型 用户创建事件 然后应该正确显示事故重量。
页面目标文件:
var createincidentpage = function(){
this.priorityAdd = function(userdetail, callback) {
browser.ignoreSyncronization = true;
incidentSection.click()
.then(function(){
return PPPage.click();
}).then(function(){
browser.switchtTo().frame(0);
return newElement.click();
}).then(fucntion(){
return newppname.sendkeys("xyz");
}).then(function(){
return fromDatePicker.click();
}).then(function(){
return gotoTodayElement.click();
}).then(function(){
return editableOk.Click();
}).then(function(){
return toDatePicker.click();
}).then(function(){
return selDateinMOnth.click();
}).then(function(){
SubmitButton.click();
return callback();
});
};
module.exports = new createincidentpage();
我的步骤文件:
var createincidentpage = require ('../pages/createincidentpage.js');
Given('priority program add' , function (callback) {
createincidentpage.priorityAdd(function callback(){
callback();
}):
});
答案 0 :(得分:0)
因为您没有在for
内部调用callback()
。
为了更加清楚,我在以下代码中重命名了一些变量。
您必须调用priorityAdd()
来的callback()
,否则运行时无法结束Given()
并等到遇到超时为止。
您可以直接在Given()
内调用callback()
或像以前一样将Given()
传递到嵌套函数中并在嵌套函数中调用。
callback
步骤文件:
var createincidentpage = function(){
this.priorityAdd = function(userdetail) {
browser.ignoreSyncronization = true;
incidentSection.click()
PPPage.click();
browser.switchtTo().frame(0);
newElement.click();
newppname.sendkeys("xyz");
fromDatePicker.click();
gotoTodayElement.click();
editableOk.Click();
toDatePicker.click();
selDateinMOnth.click();
return SubmitButton.click();
};
module.exports = new createincidentpage();