量角器:测试套件完成后清理
Protractor: cleanup after test suite is finished
在我的"conf.js"测试套件中安排如下(使用saucelab的webdriver):
suites: {
abc: './abc/spec.js',
xyz: './xyz/spec.js',
pqr: './pqr/spec.js'
},
上述安排的问题是,如果其中一个警报 box/window 意外出现在其中一个测试套件中,则测试套件在该特定套件受到影响并开始失败之后。
当测试套件完成或只能手动处理时,量角器是否有内置方法关闭所有 windows/alert 框等?
据我了解,protractor
中没有地方提供 "before test suite" 或 "after test suite" 逻辑(如果我错了请纠正我)。
想法是使用 afterEach()
,根据需要尝试切换到 alert, dismiss()
it if exists (or accept()
),如果不存在则不执行任何操作:
describe("My test", function () {
afterEach(function () {
browser.switchTo().alert().then(
function (alert) {
alert.dismiss();
},
function (err) {}
);
});
it("Test smth", function () {
// ...
});
});
另请参阅:
- Protractor Dismiss Alerts If Open
这是我编写的处理多个 windows 和意外 alerts.It 的函数,它不会关闭主要 window,因为它在下一个测试套件中是必需的。
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){});
};
在我的"conf.js"测试套件中安排如下(使用saucelab的webdriver):
suites: {
abc: './abc/spec.js',
xyz: './xyz/spec.js',
pqr: './pqr/spec.js'
},
上述安排的问题是,如果其中一个警报 box/window 意外出现在其中一个测试套件中,则测试套件在该特定套件受到影响并开始失败之后。
当测试套件完成或只能手动处理时,量角器是否有内置方法关闭所有 windows/alert 框等?
据我了解,protractor
中没有地方提供 "before test suite" 或 "after test suite" 逻辑(如果我错了请纠正我)。
想法是使用 afterEach()
,根据需要尝试切换到 alert, dismiss()
it if exists (or accept()
),如果不存在则不执行任何操作:
describe("My test", function () {
afterEach(function () {
browser.switchTo().alert().then(
function (alert) {
alert.dismiss();
},
function (err) {}
);
});
it("Test smth", function () {
// ...
});
});
另请参阅:
- Protractor Dismiss Alerts If Open
这是我编写的处理多个 windows 和意外 alerts.It 的函数,它不会关闭主要 window,因为它在下一个测试套件中是必需的。
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){});
};