我正在使用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?
答案 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
。