Selenium ile Dosya İndirme Otomasyonu
Günümüzde web otomasyonu ve test süreçlerinde, Selenium sıkça tercih edilen güçlü bir araçtır. Ancak, genellikle en büyük zorluklardan biri, otomasyon sırasında dosya indirme işlemlerini yönetmektir. Bu noktada, Selenium'un kendisi doğrudan dosya indirme pencerelerini kontrol edemese de, tarayıcı ayarlarını düzenleyerek bu süreci otomatik hale getirebilirsiniz.
İlk aşamada, tarayıcı profilini veya ayarlarını yapılandırmak önemlidir. Özellikle Chrome ve Firefox gibi popüler tarayıcılar, indirme klasörünü ve otomatik indirme davranışlarını yapılandırma imkanı sunar. Bu sayede, kullanıcı müdahalesi olmadan, dosyalar belirli bir klasöre otomatik olarak kaydedilebilir.
Örneğin, Chrome için aşağıdaki gibi bir profil ayarı yapabilirsiniz:
1234567891011121314
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
prefs = {
"download.default_directory": "C:\\Yuklemeler", # Dosyaların kaydedileceği klasör
"download.prompt_for_download": False, # İndirme isteği isteme
"download.directory_upgrade": True,
"safebrowsing.enabled": True
}
chrome_options.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(options=chrome_options)
Bu yapılandırma ile, Selenium kullanarak açtığınız sayfadaki indirme linkine tıklamak yeterli olur ve dosya belirttiğiniz klasöre otomatik olarak kaydedilir. Aynı mantık Firefox için de geçerlidir,
FirefoxProfile kullanarak benzer ayarları yapabilirsiniz.
Bunun yanı sıra, indirme işlemi sırasında oluşabilecek hataları ve indirme tamamlanma süresini takip etmek de önemlidir. Çoğu zaman, indirme tamamlanmadan sonraki adımlar çalıştırılırsa, hatalar veya hatalı sonuçlar alınabilir. Bu nedenle, belirli bir dosyanın tamamen indirildiğinden emin olmak için klasördeki dosyanın büyüklüğünü veya varlığını kontrol etmek iyi bir uygulamadır.
Sonuç olarak, Selenium ile dosya indirme otomasyonu, tarayıcı ayarlarının doğru yapılandırılmasıyla oldukça etkin ve güvenilir hale gelir. Bu sayede, test veya otomasyon süreçlerinizde zaman kazanabilir ve manuel müdahaleyi ortadan kaldırabilirsiniz.