我不认为你可以。在 AfterFeatures 中,黄瓜过程已经完成,因此不再引用它。
但是,如果您只想访问一个页面,您可以在 cucumber 之外注册您的浏览器,以便仍然可以从 AfterFeatures 挂钩访问它。如果您使用 AngularJS + Protractor,Protractor 会为您处理浏览器,因此它仍然可以在 AfterFeatures 挂钩中访问。这将是相同的原则。这可以通过以下方式完成。
钩子.js
var myHooks = function () {
this.registerHandler('AfterFeatures', function (event, callback) {
console.log('----- AfterFeatures hook');
// This will not work as the World is no longer valid after the features
// outside cucumber
//this.visit('/quit', callback);
// But the browser is now handled by Protractor so you can do this
browser.get('/quit').then(callback);
});
};
module.exports = myHooks;
世界.js
module.exports = function() {
this.World = function World(callback) {
this.visit = function(url) {
console.log('visit ' + url);
return browser.get(url);
};
callback();
};
}
cucumber-js GitHub 存储库中的 AfterFeatures 示例有点误导,因为看起来您可以访问您之前在 World 中注册的驱动程序。但是,如果您只使用纯 cucumber-js,我还没有看到这项工作。
顺便说一句,您可以只使用 this 而不是 registerHandler。
this.AfterFeatures(function (event, callback) {
browser.get('/quit').then(callback);
});
希望这可以帮助。