我的測試套件有一個帶紅寶石後端的黃瓜前端,在最新版本的OSX上運行最新版本的watir-webdriver及其依賴關係。我的黃瓜環境設置爲在Firefox中執行。如何使用watir-webdriver打開一個zip文件?
我們的應用程序的導出功能創建一個zip文件,但爲了測試導入功能,我需要zip文件的內容。
我的實際測試需要解壓該zip文件並選擇其中的單個文件以用於測試我們的Web應用程序的導入功能。
任何人都可以指出一個參考,可以幫助我弄清楚如何寫?
我的測試套件有一個帶紅寶石後端的黃瓜前端,在最新版本的OSX上運行最新版本的watir-webdriver及其依賴關係。我的黃瓜環境設置爲在Firefox中執行。如何使用watir-webdriver打開一個zip文件?
我們的應用程序的導出功能創建一個zip文件,但爲了測試導入功能,我需要zip文件的內容。
我的實際測試需要解壓該zip文件並選擇其中的單個文件以用於測試我們的Web應用程序的導入功能。
任何人都可以指出一個參考,可以幫助我弄清楚如何寫?
根據我的經驗,您可以像普通用戶一樣下載此文件。因此,首先,您只需單擊下載按鈕或其他任何內容,然後即可訪問該文件,並查看其內容。
假設下載只需到默認的下載文件夾,裏面是一些簡單的代碼,你可以用它來選擇最近下載的項目:
fn = Dir.glob("~/Downloads/*.zip").max { |a,b| File.ctime(a) <=> File.ctime(b)}
然後,只需使用unzip
shell命令解壓文件。當您只需使用通用shell命令時,沒有理由在混音中添加另一個gem。
`unzip #{fn}`
然後,您可以再次使用Dir.glob得到解壓縮文件的文件夾內的所有文件名。假設該文件被命名爲「thing.zip」,你這樣做:
files = Dir.glob("~/Downloads/thing/*")
如果你想要的文件直接下載到您的項目文件夾,你可以試試這個。這也可以防止彈出窗口詢問你是否真的想保存這個方便的文件。我認爲這仍然有效,但在一段時間內沒有使用它。上述的東西肯定會有效。
profile = Selenium::WebDriver::Firefox::Profile.new
download_dir = Dir.pwd + "/test_downloads"
profile['browser.download.dir'] = download_dir
profile['browser.helperApps.neverAsk.saveToDisk'] = "application/zip"
b = Watir::Browser.new. :firefox, :profile => profile
這是一個非常有趣的方法,我在想這可能是硒相關的解決方案。謝謝,但我最終使用rubyzip gem解決了我的問題。並且會發布解決方案。 –
我結束了在https://github.com/rubyzip/rubyzip 的解決方案是鏈接添加rubyzip寶石,但我修改了我的一點點。我將以下內容添加到了我的common.rb文件中。見下:
require 'Zip'
def unpack_zip
test_home='/Users/yournamegoeshere/SRC/watir_testing/project files'
sleep(5) #<--manually making time to hit the save download dialog
zip_file_paths = []
Find.find(test_home) do |path|
zip_file_paths << path if path =~ /.*\.zip$/
end
file_name=zip_file_paths[0]
Zip::File.open(file_name) do |zip_file|
# Handle entries one by one
zip_file.each do |entry|
# Extract to file/directory/symlink
puts "Extracting #{entry.name}"
entry.extract(test_home + "/" + entry.name)
# Read into memory
content = entry.get_input_stream.read
end
# Find specific entry
entry = zip_file.glob('*.csv').first
puts entry.get_input_stream.read
end
end
該解決方案效果很好!
我可能剛剛找到了解決方案。我從來沒有用過它,但我剛剛發現了rubyzip寶石。 –