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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了量角器+黄瓜等待和超时而不执行完整测试相关的知识,希望对你有一定的参考价值。

我正在使用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();
    }):
});
答案

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

以上是关于量角器+黄瓜等待和超时而不执行完整测试的主要内容,如果未能解决你的问题,请参考以下文章

量角器超时等待存在的元素

错误超时等待量角器在 11 秒后与页面同步

执行量角器测试时“失败:等待量角器与页面同步时出错”

量角器:失败:超时等待异步角度任务在11秒后完成

量角器配置文件没有拿起黄瓜步骤定义

如何从量角器[3.0.0]和黄瓜最新版本获得cucumber-test.json