在失败的场景Cucumber上截取屏幕截图

时间:2015-02-03 02:56:22

标签: cucumber watir

我试图在失败的情况下截取屏幕截图。我在我的hooks.rb文件中有这个

After do |scenario|
    if scenario.failed?
        filename = "error-#{@current_page.class}-#{Time.now}.png" 
        @current_page.save_screenshot(filename)
        embed(filename, 'image/png')
    end
  @browser.close
end

但是当我尝试截取屏幕截图时出现此错误

undefined method `save_screenshot' for nil:NilClass (NoMethodError)

2 个答案:

答案 0 :(得分:4)

在使用场景大纲的情况下会发生这种情况,在拍摄屏幕截图之前尝试检查场景是否是场景轮廓:

After do |scenario|
   if scenario.respond_to?('scenario_outline') then
        scenario = scenario.scenario_outline
   end
   if scenario.failed?
       filename = "error-#{@current_page.class}-#{Time.now}.png" 
       @current_page.save_screenshot(filename)
       embed(filename, 'image/png')
   end
@browser.close
end

答案 1 :(得分:0)

这将有效:

@browser.driver.save_screenshot(filename)

当场景失败时,它会截取浏览器实例所在页面的屏幕截图。

您可能会收到另一个错误,因为@current_page也用于设置文件名。您可以更改文件名的定义方式,也可以使用我们可以修复@current_page问题的更多信息。