2013-04-15 4 views
3

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

Вот мой код в моем env.rb:

After do |scenario| 
    if scenario.failed? 
    @browser.driver.save_screenshot("screenshot.png") 
    embed("screenshot.png", "image/png") 
    end 

ответ

4

Вы сохраняете скриншот в тот же файл каждый раз (т.е. перезаписи предыдущего скриншота каждый раз). В отчете также были привязаны все изображения к одному и тому же месту. Вот почему вы получаете одинаковое изображение во всем мире.

Вам необходимо предоставить уникальное имя для снимка экрана.

Например, вы можете использовать временные метки (с указанием даты и времени) изображений:

After do |scenario| 
    if scenario.failed? 
    screenshot_file = "screenshot-#{Time.now.strftime('%Y%m%d-%H%M%S')}.png" 
    @browser.driver.save_screenshot(screenshot_file) 
    embed(screenshot_file, "image/png") 
    end 
end 
+0

Еще раз! Джастин, большое спасибо. Если я когда-нибудь увижу тебя, я должен тебе выпить – Azher

1

Джастин есть ответ, но в то время как временные метки в порядке, они делают его более трудным, если смотреть на файлы, чтобы узнать, какой из них был для какого сценария. Когда я запускаю тесты во время создания и отладки, я часто даже не смотрю на отчет html, я просто смотрю на сгенерированный снимок экрана, поэтому в этом случае вдвойне полезно иметь более логичные имена.

Поэтому код я использую выглядит следующим образом, и встраивает используя имя сценария

After do |scenario| 
    if scenario.failed? 
    screenshot = "./FAILED_#{scenario.name.gsub(' ','_').gsub(/[^0-9A-Za-z_]/, '')}.png" 
    @browser.driver.save_screenshot(screenshot) 
    encoded_img = @browser.driver.screenshot_as(:base64) 
    embed("data:image/png;base64,#{encoded_img}",'image/png') 
    end 
end 

Еще более надежный подход, имея дело со сценарием набросков и добавления метки времени описан в this 'Two Four One' blog posting до сих пор я не нужен зайти так далеко, но я могу извлечь из него материал, чтобы разобраться с контурами сценариев.

+0

Спасибо Чак, я дам это. Звучит неплохо, я довольно разносторонний, но я буду общаться с моей командой разработчиков и посмотреть, что они предпочитают. Еще раз Спасибо за ваш вклад – Azher

0

для тех, с помощью RSpec, есть действительно хорошая реализация HtmlFormatter в watir-rspec проекта

Смежные вопросы