在使用ruby的场景故障中更改cosbash在ios模拟器中拍摄的屏幕截图的路径

时间:2015-03-06 07:02:50

标签: ios ruby screenshot calabash calabash-ios

我正在使用calabash在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?

1 个答案:

答案 0 :(得分:1)

Calabash公开,您可以使用environment variable named SCREENSHOT_PATH设置保存屏幕截图的路径。

至于文件名,您可能想尝试使用screenshot API。阅读你的评论你似乎已经尝试过,但我认为你可能没有使用正确的签名。

查看source for screenshot我们看到它的定义如下:

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

正如你所看到的那样,它需要一张地图,所以你应该尝试的是

screenshot({:name => name_of_scenario })

另请注意,文档说screenshot_embed的使用优先于screenshot