如何在Watir wait.until期间检查Dir大小是否发生变化

时间:2016-06-08 21:06:16

标签: ruby selenium watir

我有一个方法,等待使用Watir启动chrome下载。但是,我想简化并重新指定它,直到它只检查目录大小是否增加。我假设这将要求我在块的开头保存目录的大小,然后等待Dir大小等于该数字+ 1.

 def wait_for_download
     dl_dir = Dir["#{Dir.pwd}/downloads/*"].to_s
     Watir::Wait.until { !dl_dir.include?(".crdownload") }
 end

1 个答案:

答案 0 :(得分:0)

这只是您可以在初始化程序或其他任何内容中添加的几个函数。

def get_file_size_in_mb(path)
  File.size(path).to_f / 10240000.0
end

def find_all_files_inside(folder_path)
  Dir.glob("#{folder_path}/**/*")
end 

def calculate_size_of_folder_contents(folder_path)
  mb = 0.0
  find_all_files_inside(folder_path).each do |fn|
    mb += get_file_size_in_mb(fn)
  end# ^ could have used `inject` here
  mb
end

def wait_until_folder_size_changes(folder_path, seconds=2)
  while true
    size0 = calculate_size_of_folder_contents(folder_path)
    sleep seconds
    size1 = calculate_size_of_folder_contents(folder_path)
    break if (size1-size0) > 0
  end
end

Haven未经过测试,但似乎功能正常

您也可以轻松地将其编码为watir本身