量角器+黄瓜等待和超时而不执行完整测试

问题描述 投票:0回答:1

我正在使用Protractor和CucumberJS实施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();
    }):
});
protractor pageobjects cucumberjs
1个回答
0
投票

因为你没有在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();

步骤文件:

var createincidentpage = require ('../pages/createincidentpage.js');

//Option 1, invoke `callback`
Given('priority program add', function(callback) {
    createincidentpage.priorityAdd().then(function(){
       return callback();
    });
});

// Option 2, return a promise like object, recommend to use option 2
Given('adding incident weight type', function(){
    return createincidentpage.priorityAdd();
});   
© www.soinside.com 2019 - 2024. All rights reserved.