我设置了场景失败时要截取的屏幕截图,但我的html报告显示了所有失败场景下的相同屏幕截图。任何人都可以帮助我,让我知道如何为每个失败的场景拍摄独特的截图。
这是我的env.rb中的代码:
After do |scenario|
if scenario.failed?
@browser.driver.save_screenshot("screenshot.png")
embed("screenshot.png", "image/png")
end
答案 0 :(得分:4)
每次都将屏幕截图保存到同一个文件中(即每次都覆盖以前的屏幕截图)。该报告还将所有图像链接到同一个地方。这就是为什么你到处都能得到相同的图像。
您需要为屏幕截图提供唯一的名称。
例如,您可以为图像添加时间戳(包括日期和时间):
After do |scenario|
if scenario.failed?
screenshot_file = "screenshot-#{Time.now.strftime('%Y%m%d-%H%M%S')}.png"
@browser.driver.save_screenshot(screenshot_file)
embed(screenshot_file, "image/png")
end
end
答案 1 :(得分:1)
Justin有答案,但是虽然时间戳很好,但是在查看文件时会更难以知道哪个是什么情况。当我在创建和调试时运行测试时,我经常不查看html报告,我只看生成的屏幕截图,因此在这种情况下,拥有更多逻辑名称是非常有用的。
因此我使用的代码如下所示,并使用方案名称
进行嵌入After do |scenario|
if scenario.failed?
screenshot = "./FAILED_#{scenario.name.gsub(' ','_').gsub(/[^0-9A-Za-z_]/, '')}.png"
@browser.driver.save_screenshot(screenshot)
encoded_img = @browser.driver.screenshot_as(:base64)
embed("data:image/png;base64,#{encoded_img}",'image/png')
end
end
在this 'Two Four One' blog posting中描述了一种更强大的方法,处理场景大纲和附加时间戳,到目前为止我还没有必要走得那么远,但我可以从中提取一些内容来处理场景大纲。
答案 2 :(得分:0)
对于那些使用RSpec的人来说,watir-rspec项目中有一个非常好的HtmlFormatter实现