在cucumber-js

时间:2017-01-24 08:20:32

标签: selenium-webdriver cucumberjs

我正在使用cucumber-js运行selenium-webdriver测试。 我希望在任何步骤超时时添加浏览器的屏幕截图。 我在所有步骤中使用全局超时:

this.setDefaultTimeout(3 * 60 * 1000);

在我的钩子文件中。

如何注册全局超时事件(如果存在)?

1 个答案:

答案 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();
          });
    }
});