2016-06-08 1 views
0

Watir을 사용하여 크롬 다운로드가 시작될 때까지 기다리는 방법이 있습니다. 그러나 간단하게 지정하고 다시 지정하여 디렉터리 크기가 증가하는지 여부를 간단히 확인합니다. 나는이 디렉터리의 크기는 그 숫자 + 1Watir 동안 Dir 크기가 변경되는지 확인하는 방법 wait.until

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

경우 다운로드의 크기가 증가하기 전에 'Watir :: Wait.until' 블록이 호출됩니다. 크기를 확인하려면 먼저 디렉토리 크기를 저장 한 다음 조치를 취한 다음 크기가 1 씩 증가 할 때까지 기다려야합니다. – titusfortner

+0

나는이 솔루션을 너무 싫어해서 내가 그것을 되찾기 전에 나는 그 남자의 대답을 downvoted했다. 그러나 분명히 이것에 대한 보석이있다 : http://stackoverflow.com/questions/9354595/recursively-getting-the-size-of- a-directory –

+0

파일을 다운로드하는 경우 왜 그 크기가 _increased_인지 확인해야합니까? 나는 당신이 파일을 가지지 않는 것에서 파일의 적어도 일부분을 가지게 될 것이라고 기대할 것입니다 - 즉 파일 크기가 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 

당신 수도 Watir과 그 자체로 쉽게 원숭이 코드이 경쟁 조건에 자신을 열 것

관련 문제