Встраивание огурца для скриншотов без ссылки на скриншот - PullRequest
3 голосов
/ 03 июня 2011

Кросс-пост от группы Google Cukes:

Я экспериментировал с несколькими методами сохранения скриншотов, но остановился на методе, который встроен в watir-webdriver. нет независимо от того, какой метод я использовал, я не могу ссылка на это изображение в отчете по огурцам в формате HTML.

В c: \ ruby ​​\ cucumber \ имя_проекта \ 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 Ответ

4 голосов
/ 07 июня 2011

Аслак:

Попробуйте:

After do |scenario|
  if scenario.failed?
    encoded_img = @browser.driver.screenshot_as(:base64)
    embed("data:image/png;base64,#{encoded_img}",'image/png')
  end
end

Аслак

Адам:

Аслак смог увидеть встроенное изображение в файле, который я ему отправил, в то время как я не смог сделать это в 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')

Очевидно, что вы должны убедиться, что относительный путь, который вы передаете для встраивания, правильный (в зависимости от того, где вы пишете HTML)

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

HTH, Aslak

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...