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

时间:2011-06-03 15:23:34

标签: ruby cucumber embed watir watir-webdriver

来自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)

1 个答案:

答案 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