我正在使用cucumber-js运行selenium-webdriver测试。 我希望在任何步骤超时时添加浏览器的屏幕截图。 我在所有步骤中使用全局超时:
this.setDefaultTimeout(3 * 60 * 1000);
在我的钩子文件中。
如何注册全局超时事件(如果存在)?
答案 0 :(得分:1)
Selenium Webdriver js提供获取屏幕截图的功能,你只需要在After
中使用它,这类似于@AfterClass
中的TestNG
标签
After
场景将在Feature中的每个场景之后执行,并检查场景的结果,它将失败,它将截取屏幕截图。
失败的原因可能是任何事情,如错误或DEFAULT_TIMEOUT
您需要在world.js中添加此内容
this.After(function (scenario) {
if (scenario.isFailed()) {
// take a screenshot
// driver.takeScreenshot() is defined in webDriver.js
return driver.takeScreenshot()
.then(function (screenShot) {
scenario.attach(new Buffer(screenShot, 'base64'), 'image/png');
return driver.close()
.then(function () {
return driver.quit();
});
});
}
else {
return driver.close()
.then(function () {
return driver.quit();
});
}
});