黄瓜嵌入截图不链接到屏幕截图

来自Cukes Google Group的交叉发布:

我已经尝试了许多保存屏幕截图的方法,但确定了内置于watir-webdriver的方法。 无论我使用哪种方法,我都无法在Cucumber 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)

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:

我相信HTML页面[1]中的图像的Base64编码适用于所有不错的浏览器(抱歉,IE不是其中之一)。 但是,它应该在IE中工作: http : //dean.edwards.name/weblog/2005/06/base64-ie/ (但也许他们在IE8中打破了它,或者它可能只适用于GIF,或者IE需要一个特殊的base64编码,或者你应该只是放弃IE)

如果能够在IE中读取带有屏幕截图的黄瓜html报告对您来说非常重要,您可以随时将每个图像写入磁盘:

  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