截取失败场景 Cucumber 的屏幕截图
Taking a screenshot on failed scenario Cucumber
我正在尝试截取失败场景的屏幕截图。我的 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)
在使用场景大纲的情况下可能会出现这种情况,请在截图之前尝试检查场景是否为场景大纲:
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
这会起作用:
@browser.driver.save_screenshot(filename)
场景失败时会截图浏览器实例所在的页面
您可能会遇到另一个错误,因为@current_page 也用于设置您的文件名。您可以更改定义文件名的方式,或者通过更多信息我们可以解决@current_page 问题。
我正在尝试截取失败场景的屏幕截图。我的 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)
在使用场景大纲的情况下可能会出现这种情况,请在截图之前尝试检查场景是否为场景大纲:
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
这会起作用:
@browser.driver.save_screenshot(filename)
场景失败时会截图浏览器实例所在的页面
您可能会遇到另一个错误,因为@current_page 也用于设置您的文件名。您可以更改定义文件名的方式,或者通过更多信息我们可以解决@current_page 问题。