使用 ruby 在场景失败时更改 ios 模拟器中 calabash 截取的屏幕截图路径
change path of screenshot taken by calabash in ios simulator on scenario failure using ruby
我正在使用 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...并用模拟器替换了浏览器,但没有用...
有什么方法可以在不触及 failure_helpers 的情况下更改 ios sim 保存模拟器的位置?
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
。
我正在使用 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...并用模拟器替换了浏览器,但没有用... 有什么方法可以在不触及 failure_helpers 的情况下更改 ios sim 保存模拟器的位置?
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
。