3

Cukes Googleグループからのクロスポスト:

スクリーンショットを保存するいくつかの方法を試しましたが、watir-webdriverに組み込まれている方法に落ち着きました。どの方法を使用しても、この画像へのリンクをCucumberHTMLレポートに正常に埋め込むことができません。

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)

4

1 に答える 1

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ではまだ見ることができませんでした。Firefox3.6で試してみたところ、画像は期待どおりに表示されました。問題は元々埋め込みメソッド自体(またはむしろそれの使用)にある可能性がありますが、Aslakのbase64ソリューションを使用すると、InternetExplorerブラウザーでは機能しません。

Aslak:

HTMLページでの画像のBase64エンコーディング[1]は、すべての適切なブラウザで機能すると思います(申し訳ありませんが、IEはそれらの1つではありません)。ただし、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')

明らかに、埋め込みに渡す相対パスが正しいことを確認する必要があります(html自体を書き込む場所によって異なります)

[1] http://en.wikipedia.org/wiki/Data_URI_scheme

HTH、Aslak

于 2011-06-07T18:30:17.240 に答える