簡體   English   中英

使用ruby更改方案失敗時ios模擬器中calabash拍攝的屏幕截圖的路徑

[英]change path of screenshot taken by calabash in ios simulator on scenario failure using ruby

我正在使用葫蘆在iOS本機應用程序上進行測試。 calabash拍攝一個屏幕截圖,並在場景失敗時將其命名為screenshot_0,並將其保存在我的項目目錄中。 我想知道如何更改屏幕快照的路徑以及如何更改文件名。

我使用以下內容:

dir_path = "/Users/bmw/Desktop/Calabash/screenshots "
unless Dir.exist?(dir_path)
    Dir.mkdir(dir_path,0777)
    puts "=========Directory is created at #{dir_path}"
else
    puts "=========Directory already exists at #{dir_path}"
end

#Run after each scenario
After do |scenario|
  #Check, scenario is failed?
  if(scenario.failed?)
         time = Time.now.strftime('%Y_%m_%d_%Y_%H_%M_%S_')
         name_of_scenario = time + scenario.name.gsub(/\s+/, "_").gsub("/","_")
         puts "Name of snapshot is #{name_of_scenario}"
         file_path = File.expand_path(dir_path)+'/'+name_of_scenario +'.png'
         page.driver.simulator.save_screenshot file_path
         puts "Snapshot is taken"
    puts "#===========================================================#"
    puts "Scenario:: #{scenario.name}"
    puts "#===========================================================#"
  end
end

我曾在某處看到page.driver.browser,simulator.save_screenshot ...並用模擬器替換了瀏覽器,但那行不通...有什么辦法可以改變ios sim保存模擬器的位置,而無需觸及failure_helpers?

葫蘆公開了一個名為SCREENSHOT_PATH環境變量,您可以使用它來設置保存屏幕快照的路徑。

至於文件名,您可能想嘗試使用screenshot API。 閱讀您的評論似乎已經嘗試過,但是我認為您可能未使用正確的簽名。

查看screenshot源代碼,我們看到它的定義如下:

def screenshot(options={:prefix => nil, :name => nil})
  ...

如您所見,它正在等待一張地圖,因此您應該嘗試的是

screenshot({:name => name_of_scenario })

另請注意,該文檔指出,使用screenshot_embed優於screenshot

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM