在我的“conf.js”中,测试套件排列如下(使用saucelab的webdriver):
suites: {
abc: './abc/spec.js',
xyz: './xyz/spec.js',
pqr: './pqr/spec.js'
},
上述安排的问题是,如果其中一个警报框/窗口意外出现在其中一个测试套件中,那个特定套件遭遇并开始失败之后的测试套件。
当测试套件完成或者只能手动处理时,量角器中是否有内置的关闭所有窗口/警报框等的方式?
答案 0 :(得分:1)
根据我的理解,protractor
中没有地方可以提供“测试套件之前”或“测试套件之后”逻辑(如果我错了,请纠正我)。
想法是使用afterEach()
,尝试切换到alert,dismiss()
如果存在(或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){});
};