2013-07-24 144 views
-1

我使用硒進行屏幕截圖進行我的黃瓜測試。我想要執行其中一個步驟,將屏幕截圖文件放置在文件夾名稱中,並使用來自step +時間戳的輸入生成文件夾名稱。創建一個目錄並將文件移動到其中

這是我迄今完成:

Then /^screen shots are placed in the folder "(.*)"$/ do |folder_name| 
    time = Time.now.strftime("%Y%m%d%H%M%S") 
    source ="screen_shots" 
    destination = "screen_shots\_#{folder_name}_#{time}" 

    if !Dir.exists? destination 
     Dir.new destination 

    end 
    Dir.glob(File.join(source, '*')).each do |file| 

     if File.exists? (file) 

       File.move file, File.join(destination, File.basename(file)) 
     end 
    end 
end 

如果該目錄不存在,我想創建它。然後我想把所有的截圖放到新的目錄中。

該文件夾將被創建在與屏幕截圖相同的目錄中,然後將所有屏幕截圖文件移動到該文件夾​​中。我仍然在學習Ruby和我試圖把這個一起不工作都:

Desktop > cucumber_project_folder > screenshots_folder > shot1.png, shot2.png

總之,我想在screenshots創建一個新的目錄和移動shot1.pngshot2.png進去。我該怎麼做?

基於給定此答案是源路徑中的步驟,從而不同的用戶不必修改該定義表示的溶液(對於黃瓜)

Then /^screen shots are placed in the folder "(.*)" contained in "(.*)"$/ do |folder_name, source_path| 
    date_time = Time.now.strftime('%m-%d-%Y %H:%M:%S') 
    source = Pathname.new(source_path) 
    destination = source + "#{folder_name}_#{date_time}" 
    destination.mkdir unless destination.exist? 
    files = source.children.find_all { |f| f.file? and f.fnmatch?('*.png') } 
    FileUtils.move(files, destination) 
end 

+1

你應該看看[**文件實用程序**](http://www.ruby-doc.org/stdlib-2.0/libdoc/fileutils/rdoc/FileUtils.html#method-c-mkdir_p)和嘗試一下自己..它非常容易..所有可以使用這個stdlib .. :)) –

+1

StackOverflow是一個提問的好地方,但你不應該指望我們爲你做這項工作。告訴我們你有什麼和沒有工作,我們會盡力幫助你通過它 - 但正如@Priti所說,使用Ruby標準庫編寫它非常簡單。 –

+0

謝謝!我會記住:) – meggex

回答

2

我不知道發生了什麼事情與你的代碼

Then /^screen shots are placed in the folder "(.*)"$/ do |folder_name| 

,因爲它不是Ruby代碼第一線,但我將它從一個文件中的假想線工作。

  • Pathname類允許之類的東西,而不是destination.exist?File.exist?(destination)。它還允許您使用+構建複合路徑並提供children方法。

  • FileUtils模塊提供了move設施。

  • 請注意,Ruby允許在Windows路徑中使用正斜槓,並且通常更容易使用它們,而不必在任何地方都反斜槓。

我也在日期和時間之間在目錄名稱中添加了一個連字符,否則它幾乎不可讀。

require 'pathname' 
require 'fileutils' 

source = Pathname.new('C:/my/source') 

line = 'screen shots are placed in the folder "screenshots"' 

/^screen shots are placed in the folder "(.*)"$/.match(line) do |m| 

    folder_name = m[1] 
    date_time = Time.now.strftime('%Y%m%d-%H%M%S') 

    destination = source + "#{folder_name}_#{date_time}" 
    destination.mkdir unless destination.exist? 
    jpgs = source.children.find_all { |f| f.file? and f.fnmatch?('*.jpg') } 
    FileUtils.move(jpgs, destination) 

end 
+0

謝謝!我改變了這一點讓它起作用。第一行是小黃瓜,正如我提到的,我正在爲黃瓜測試寫這篇文章。我會發布我的修改。 – meggex

相關問題