在Selenium Webdriver + capyabara

时间:2019-04-13 11:04:27

标签: ruby rspec capybara screenshot webpage-screenshot

第一遍:我将屏幕截图命名为“ x”。

很明显,最小设置仅允许1张屏幕截图

我想以一种独特的方式命名屏幕截图,并同时反映其用法。

我可以使用以下方式使文件名相当唯一

output_directory = 'screenshots'
time = Time.new
page.save_screenshot("#{output_directory}/#{time}.png")

有点难看,但我明白了

$ ls screenshots/

'019-04-13 07:07:50 -0400.png'' 

可以使用既符合唯一性又符合描述性要求的良好格式。我可以以某种方式包括方案说明吗?

我怎么会得到这样的东西:

scenario_decsription_2019_04_19-08_55_20

2 个答案:

答案 0 :(得分:1)

RSpec测试定义方法和挂钩(scenariobeforeafter等)都接收一个可选参数,该参数是测试示例本身。这样,您就可以获取测试的说明等,以用于命名文件

scenario "my test" do |example|
  ...
  page.save_screenshot("#{example.full_description}.png")
end

很显然,您可以按照需要的方式转换说明(将空格转换为下划线等)。

注意:如果您不想到处都Capybara.save_path,您可能还想看看screenshots/,它指定了存储屏幕快照的目录。

答案 1 :(得分:0)

这样的事情怎么样?

scenario "#{scenario = 'user_clicks_the_dropdown'}" do
  output_directory = 'screenshots'
  time = Time.new
  suffix = time.to_s(:db).gsub(/[\:\.\_\s]/,'_')
  page.save_screenshot("#{output_directory}/#{scenario}_#{suffix}.png")
end