2015-02-03 3 views
0

Я пытаюсь сделать снимок экрана в неудавшемся сценарии. У меня есть это в моем hooks.rb файлеВыполнение скриншота при неудачном сценарии Cucumber

After do |scenario| 
    if scenario.failed? 
     filename = "error-#{@current_page.class}-#{Time.now}.png" 
     @current_page.save_screenshot(filename) 
     embed(filename, 'image/png') 
    end 
    @browser.close 
end 

, но я получаю эту ошибку, когда он пытается сделать скриншот

undefined method `save_screenshot' for nil:NilClass (NoMethodError) 
+0

Как вы устанавливаете @current_page? –

+0

Возможно ли @current_page, возможно, вне сферы действия, как только вы доберетесь до прихода? –

ответ

2

Это может происходит в случае использования сценария контура, попытайтесь проверить сценарий сценарий план или нет, прежде чем принимать скриншот:

After do |scenario| 
    if scenario.respond_to?('scenario_outline') then 
     scenario = scenario.scenario_outline 
    end 
    if scenario.failed? 
     filename = "error-#{@current_page.class}-#{Time.now}.png" 
     @current_page.save_screenshot(filename) 
     embed(filename, 'image/png') 
    end 
@browser.close 
end 
0

Это будет работать:

@browser.driver.save_screenshot(filename) 

На скриншоте страницы, на которой запущен экземпляр браузера, происходит сбой сценария.

Возможно, вы получите еще одну ошибку, так как @current_page также используется при настройке имени вашего файла. Вы можете либо изменить, как вы определяете имя файла, либо с дополнительной информацией, мы можем исправить проблему @current_page.

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