2016-10-19 149 views
0

我正在尋找一種方法來實現將場景作爲參數傳遞的AfterStep(@tag)。不幸的是,這不起作用,我找不到辦法。如何實現AfterStep獲取標籤並將場景作爲參數傳遞?

我也看了成Cucumber Hooks documentation,但沒有很好的幫助。

我試圖實現的方式:

AfterStep('@screenshot') do |scenario| 
    # Add screenshot to baseline folder. 
    @helper = Helper.new 
    @helper.take_screenshot(scenario.name, 'screenshots/baseline') 
    end 

當我運行測試,我得到這個錯誤:

undefined method `name' for #<Cucumber::Core::Test::Result::Passed:0x007f2b818e6d50> (NoMethodError) 

這裏的目標是採取從場景的截圖與@screenshot標記。

+0

在Java的情況下,存在它在QAF-小黃瓜[https://qmetry.github.io/qaf/latest/qaf-gherkin-client.html]通過步驟聽者的手段的一種方式。你可以檢查你是否可以爲ruby實現相同的事情 – user861594

+1

爲什麼使用AfterStep而不是After(場景)?嘗試:('@ screenshot')do | scenario |之後..... – Sam

回答

0

由於@Sam指出,使用After('@screenshot') do |scenario|的伎倆我。

0
After('@screenshot') do |scenario| 

    output_folder = (ENV["output_folder"] || "features/output") + "/" + ENV['TIMESTAMP'][0,10] 
    scenario_folder = output_folder + '/' + 'failure screenshots' + '/' 

    if scenario.respond_to? (:title) 
    script_name = scenario.name 
    else 
    script_name = scenario.scenario_outline.title 
    end 

    screenshot_file = scenario_folder + script_name.gsub(/[\/\\| <>\n\r]+/, "_")[0..90] + ".png" 
    current_path = '' 


    begin 
    screenshot_file.split(/\//).map{|m| m.split(/\\/)}.flatten.each {|folder| 
    next if folder =~ /\.png/ 
    current_path += folder + "/" 
    next if folder.downcase =~ /:/ 
    Dir.mkdir(current_path) unless File.exists?(current_path) 
    } 

    @browser.screenshot.save screenshot_file 
    embed screenshot_file, 'image/png' 

    rescue Exception => e 
    p e.message 
    p "Could not capture screenshot" 
    end 

end 
+0

這不是我正在尋找的。我確實有一個輔助方法來截取屏幕截圖。我懷疑是如何使用After(或AfterStep)方法傳遞場景作爲參數。但是,謝謝。 – fmondaini

相關問題