来自Cukes Google Group的交叉发布:
我已尝试了多种保存屏幕截图的方法, 但确定了内置于watir-webdriver的方法。没有 无论我使用哪种方法,我都无法成功嵌入 在黄瓜HTML报告中链接到此图片。
在c:\ ruby \ cucumber \ project_name \ features \ support \ hooks.rb中,我正在使用:
After do |scenario|
if scenario.failed?
@browser.driver.save_screenshot("screenshot.png")
embed("screenshot.png", "image/png")
end
end
带有文本“屏幕截图”的链接已添加到报告中,但URL为
项目目录路径("c:\ruby\cucumber\project_name")
而不是
而不是直接链接到文件("c:\ruby\cucumber\project_name\screenshot.png")
。我尝试了许多不同的图像格式
并使用Dir.pwd直接路径,每次都有相同的结果。
我错过了什么?
由于
Windows XP Ruby 1.8.7 watir-webdriver(0.2.4) 黄瓜(0.10.3)
答案 0 :(得分:4)
Aslak:
试试这个:
After do |scenario|
if scenario.failed?
encoded_img = @browser.driver.screenshot_as(:base64)
embed("data:image/png;base64,#{encoded_img}",'image/png')
end
end
Aslak
亚当:
Aslak能够看到嵌入式 我通过电子邮件发送给他的文件中的图片, 虽然我仍然无法这样做 IE 8.我在Firefox 3.6中尝试过 并且图像按预期显示。 问题原来可能是 嵌入方法本身(或 相反,我使用它),但使用 Aslak的base64解决方案只会失败 在Internet Explorer中工作 浏览器。
Aslak:
我相信Base64编码的图像 HTML页面[1]适用于所有体面的 浏览器(抱歉,IE不是其中之一 他们)。但是,应该工作 IE: http://dean.edwards.name/weblog/2005/06/base64-ie/ (但也许他们在IE8中打破了它,或者 也许它只适用于GIF,或者 也许IE需要特殊类 base64编码,或许你应该 只是沟通IE)
如果能够读取黄瓜html 在IE中截图的报道是 对你来说真的很重要,你可以 始终将每个图像写入磁盘:
png = @browser.driver.screenshot_as(:png)
path = (0..16).to_a.map{|a| rand(16).to_s(16)}.join + '.png' # Or use some GUID library to make a unique filename - scenario names are not guaranteed to be unique.
File.open(path, 'wb') {|io| io.write(png)}
embed(path, 'image/png')
显然你必须确保 你传递给embed的相对路径是 对(取决于你写的地方 html本身)
[1] http://en.wikipedia.org/wiki/Data_URI_scheme
HTH,Aslak