【发布时间】:2016-05-27 13:37:04
【问题描述】:
我使用 Protractor 进行 e2e 测试。而且我尝试在特定错误之后停止测试执行(不是全部,不仅是在第一个错误之后(如快速失败))。 我尝试使用承诺、流程等。 如果我写: process.exit(1) 它可以工作,但是套件中的所有规范都没有启动。 也许有人知道我可以如何停止当前规范(特定错误后的描述步骤)?
我的想法是在 .waitReady() 方法中使用它:
waitReady = function(opt_optStr) {
var self = this;
var driverWaitIterations = 0;
var lastWebdriverError;
function throwError() {
//STOP EXECUTING!!
throw new Error("Expected '" + self.locator().toString() +
"' to be present and visible. " +
"After " + driverWaitIterations + " driverWaitIterations. " +
"Last webdriver error: " + lastWebdriverError);
}
function isPresentError(err) {
lastWebdriverError = (err != null) ? err.toString() : err;
//STOP EXECUTING!!
return false;
}
return browser.driver.wait(function() {
driverWaitIterations++;
if (opt_optStr === 'withRefresh' && driverWaitIterations > 7) {
refreshPage();
}
return self.isPresent().then(function(present) {
if (present) {
return self.isDisplayed().then(function(visible) {
lastWebdriverError = 'visible:' + visible;
return visible;
}, isPresentError);
} else {
lastWebdriverError = 'present:' + present;
return false;
}
}, isPresentError);
}, 10000).then(function(waitResult) {
if (!waitResult) {
throwError();
}
return waitResult;
}, function(err) {
isPresentError(err);
throwError();
return false;
});
};
【问题讨论】:
标签: javascript jasmine protractor angularjs-e2e