Firefox ile Watir-Webdriver'ı ve watirwebdriver.com sitesinden dosya indirme işlemlerini otomatikleştirmek için önerilen yöntemi kullanıyorum. Bu, FireFox'u şu şekilde ayarlamayı içerir: belirli dosya türleri için FireFox'taki indirme iletişimini devre dışı bırakmak için config parametreleri. Bu iyi çalışıyor, ancak şimdi, dosya indirme işleminin ne zaman tamamlandığını belirlemenin en iyi yolunu bulmaya çalışıyorum (bazıları bir kaç saniye sürüyor, bazıları bir kaç dakika alıyor), böylece siteden çıkış yapabilirim ve bir sonraki teste geçebilirim. Tarayıcıda herhangi bir görsel ipucu kalmamış olduğundan, dosyayı indirme dizininde izlemek zorunda kalabilirim. Herhangi bir seçenek takdir edilecektir.Watir-Webdriver Yükleme için Tamamlandı
cevap
Belki de birkaç saniye değişen durduğunda görmek için dosya boyutunu izleyebilirsiniz.
Dosya indirme otomasyonu için biraz farklı bir yaklaşımım var. Ben böyle yapmak :
requiures:
require 'rubygems'
require 'watir-webdriver'
require 'win32ole'
İlk Filesize kullanım için bir yöntem oluşturun:
def fileinfo(name)
if File.exists?(name)
print "#{name} exists "
bytes = File.size(name)
print "and is #{bytes} in size;"
whenm = File.mtime(name)
print whenm,";"
print whenm.to_i,";"
else
print "#{name} does NOT exist;"
end
end
İkincisi önceden kurulum indir dir ile krom sürücü:
download_directory = "#{Dir.pwd}/downloads"
download_directory.gsub!("/", "\\") if Selenium::WebDriver::Platform.windows?
profile = Selenium::WebDriver::Chrome::Profile.new
profile['download.prompt_for_download'] = false
profile['download.default_directory'] = download_directory
Sonraki dosyayı (önceki çalışmalardan) sınama durumu için silin yeniden kullanılabilirlik ve validness (3 tane):
%x(DEL /Q C:\\automation\\qa\\downloads\\*.exe)
%x(DEL /Q downloads\\*.exe)
%x(DEL /Q downloads\\*.*)
indirilen bileşenin boyutu değişkeni tanımlayın:
contains = Dir.new(download_directory).entries
dlc = contains[2]
dcinfo = fileinfo("downloads/"+dlc)
dlcsize = File.size("downloads/"+dlc)
Ve son olarak doğrulama noktasını içerebilir:
if dlcsize > 0
puts "File found and is #{dlcsize} bytes."
logfile = open("test_results.csv", "a")
begin
logRow = "#{__FILE__}"
logfile.puts logRow + "," + "Passed".to_s
end
else
puts "Test Failed! File not found either is zero."
logfile = open("test_results.csv", "a")
begin
logRow = "#{__FILE__}"
logfile.puts logRow + "," + "Passed".to_s
end
end
Sadece dosyalara bakmayı sevmedim, kırılgan hissettim, bu yüzden dosyayı açık tutan hiçbir işlemin bulunmadığını ve daha sonra dosyayı okuduğunu algılamak için lsof komutunu kullanıyorum. Ağdaki hıçkırıklardan dolayı indirme işlemindeki bir duraklamanın aralıklı hatalara neden olmayacağı, ancak daha da kötüsünün (?) Portatif olmadığından ve lsof komutunun dışına çıkarılmasından daha iyidir. Ek bir .crdownload
dosya uzantısı ile
# Watch the download dir for new files, and read the first new file that
# appears.
def read_newest_download
existing_files = list_files_in_download_dir
new_files = []
Timeout::timeout(DOWNLOAD_TIMEOUT) do
while (new_files = list_files_in_download_dir - existing_files).empty?
sleep 0.25
end
end
if 1 == new_files.size
wait_for_file_to_be_closed(new_files.first)
File.read(new_files.first)
else
fail "Found #{new_files.size} new files."
end
end
# Ignore files ending in .part, which is common for temp files in Firefox.
def list_files_in_download_dir
raise ArgumentError, "No download dir specified" unless @opts[:download_dir]
@_download_glob ||= File.join(@opts[:download_dir], "*")
# Ignore files ending in .part as they're temporary files from Firefox.
Dir[@_download_glob].entries.reject {|e| /\.part$/ === e}
end
def wait_for_file_to_be_closed(filename)
begin
sleep 0.25
end until `lsof #{filename}`.blank?
end
Krom saklar tamamlanmamış indirme:
kodlu
böyle bir şey görünüyordu. İndirme dizinini.crdownload
ile biten bir dosya vardır ve indirme hala
ben bu işlemek yolu sürmekte olup olmadığını söyleyecektir gerekip gerekmediğini görmek için kontrol edin Aşağıdaki
Firefox dosyaları .part
ile sona indirmek olduğunu, tüm dosyaların eklendikten sonra bir listede indirilen adlarına sahip olur.Onlara parçası" o listede döngü devam ve bu dosyaların herhangi hala indirme klasörüne
Python kodu lsdir mevcut olmadığını kontrol :
import os
import time
def wait_till_download():
if len(new_part_files) > 0:
time.sleep(1)
for part_file in new_part_files:
if part_file in os.listdir("."):
print "Downloading..."
wait_till_download()
not: hiçbir bölümü dosyalar olduğunda .
:os.listdir('.')
yılında, o indirme Ben indirilen PDF dosyasının içeriğini ayıklamak için istedim benzer bir görevi vardı
Kabuk komutu pdftotext komutunu kullanarak metni ayıklama 20 denemesi yapar ve kabuk komutunun başarılı olması durumunda bloğun dışına çıkacaktır. Bu şekilde yapmanın avantajı, eğer dosya mevcut değilse veya dosya sadece kısmen indirilmişse, bir hata üretecek ve sonra tekrar deneyecektir. Dosyanız bir PDF değilse veya içeriği umursamıyorsanız, dosya eksikse bir hata üretmesi koşuluyla pdftotext yerine başka bir kabuk komutu kullanırsınız.
- 1. Simge adları için LLDB sekmesi tamamlandı
- 2. Erlang için Emacs/TextMate kodu tamamlandı mı?
- 3. Git bash sekmesi tamamlandı .sh dosyaları için
- 4. Pencerelerde python sekmesi tamamlandı
- 5. Ajax, başarı veya hata iletmez, ancak tamamlandı ve tamamlandı
- 6. Makefiles Turing tamamlandı mı?
- 7. Excel içinde VBA içinde tamamlandı
- 8. Yürütme kodu AFTER Recaptcha.reload() tamamlandı
- 9. Eclipse'de "Dumb" metin tamamlandı mı?
- 10. Git ve son işlem tamamlandı
- 11. "İşlem başarıyla tamamlandı" özel durumu
- 12. Spring SSEEmitter Tamamlandı Orta yol
- 13. Scala REPL'in sekmesi tamamlandı mı?
- 14. Güncelleme jQuery değişkeni ajax tamamlandı
- 15. Sekme tamamlandı: Macvim'de açık mı?
- 16. Matplotlib ile alanların doldurulması tamamlandı
- 17. Nasıl Zamanlayıcı görevi tamamlandı olup olmadığını belirlemek için
- 18. Xcode 4 hata ayıklayıcı kodu tamamlandı
- 19. Xamarin iOS pop tamamlandı UINavigationController Yığından
- 20. Otomatik Google Haritalar'dan biri gibi konumlarla tamamlandı
- 21. Dosya yolu otomatik tamamlandı VS Kod
- 22. Kurulum tamamlandıktan sonra Autostart Android uygulaması tamamlandı
- 23. SSL hatası: sertifika Zinciri Tamamlandı mı?
- 24. Nasıl html5 formu doğrulama tamamlandı kontrol edin
- 25. Emacs otomatik tamamlandı açılan menüsü bozuk
- 26. Ekran Sayfa Yükleme Süresi 3
- 27. scala genericics ve konsol otomatik tamamlandı
- 28. IPython Dizüstü Bilgisayar Sekmesi Tamamlandı - Dökümanı Göster
- 29. Kod 212, Kompozisyon ve yetkilendirme tamamlandı
- 30. Swift Xcode hata ayıklama otomatik tamamlandı
Bu, bulduğum tek çözüm. Bu çok tatmin edici değil çünkü Firefox'un bir indirme işlemini nasıl yürüttüğüne dair dosyayı izlemem gerekiyor. Farklı bir tarayıcıyı kontrol ederken çalışır ancak taşınabilir değildir. – user1142012
Daha az kararlı bir ağ bağlantınız olduğunda da sorunlarla karşılaşabilirsiniz. – encoded