我试图在失败的情况下截取屏幕截图。我在我的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)
答案 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问题的更多信息。