量角器:测试套件完成后清理

时间:2015-06-01 10:08:26

标签: javascript selenium testing protractor end-to-end

在我的“conf.js”中,测试套件排列如下(使用saucelab的webdriver):

suites: {
    abc: './abc/spec.js',
    xyz: './xyz/spec.js',
    pqr: './pqr/spec.js'
},

上述安排的问题是,如果其中一个警报框/窗口意外出现在其中一个测试套件中,那个特定套件遭遇并开始失败之后的测试套件。

当测试套件完成或者只能手动处理时,量角器中是否有内置的关闭所有窗口/警报框等的方式?

2 个答案:

答案 0 :(得分:1)

根据我的理解,protractor中没有地方可以提供“测试套件之前”或“测试套件之后”逻辑(如果我错了,请纠正我)。

想法是使用afterEach(),尝试切换到alertdismiss()如果存在(或accept()取决于您需要的话),如果有的话,请不要做任何事情不存在:

describe("My test", function () {
    afterEach(function () {
        browser.switchTo().alert().then(
            function (alert) { 
                alert.dismiss(); 
            },
            function (err) {}
        );
    });

    it("Test smth", function () {
        // ...
    });
});

另见:

答案 1 :(得分:0)

这是我编写的处理多个窗口和意外警报的函数。它不会关闭主窗口,因为在下一个测试套件中需要它。

this.cleanUp = function(){
        browser.driver.getAllWindowHandles().then(function(handles){
            for(var i=handles.length-1;i>-1;i--){
                browser.switchTo().window(handles[i]);
                browser.switchTo().alert().then(function(alert){
                    alert.dismiss();
                },function(err){});
                if(i)
                    browser.close();
            }
        },function(err){});
    };