2017-05-25 3 views
1

Ich mache ein Programm zum automatischen Download der Daten mit Selen-Webdriver in Python. Wenn ich auf den "Download" -Button klicke, erscheint folgendes Popup-Fenster:Windows-Popup-Interaktion zum Herunterladen mit Selen-Webdriver in Python

. enter image description here

mit der Standardoption "Öffnen mit" ausgewählt. Ich möchte, dass mein Programm zuerst auf die Option "Datei speichern" klickt und dann auf "OK" klickt. Ich habe folgenden Code verwendet Firefox-Profil einzurichten

profile = webdriver.FirefoxProfile() 
    profile.set_preference('browser.download.folderList', 2) 
    profile.set_preference('browser.download.manager.showWhenStarting', False) 
    profile.set_preference('browser.download.dir', os.getcwd()) 
    profile.set_preference('browser.helperApps.neverAsk.saveToDisk', "application/xlsx") 

Aber es ist in meinem Fall nicht funktioniert. Dann habe ich versucht, aus dem Hauptfenster zu diesem Fenster zu wechseln, indem Sie folgenden Code

parent_h = driver.current_window_handle 
    handles = driver.window_handles 
    handles.remove(parent_h) 
    driver.switch_to_window(handles.pop())  

mit Aber jetzt bin ich nicht immer, wie man mit diesem Fenster zu interagieren?

Antwort

1

Nach so viel Erkenntnisse und Forschung, bekomme ich den folgenden Code, der für diese Art von Situation hilfreich wäre.

profile = webdriver.FirefoxProfile() 
    profile.set_preference("browser.download.dir",os.getcwd()); 
    profile.set_preference("browser.download.folderList",2); 
    profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/csv,application/excel,application/vnd.msexcel,application/vnd.ms-excel,text/anytext,text/comma-separated-values,text/csv,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/octet-stream"); 
    profile.set_preference("browser.download.manager.showWhenStarting",False); 
    profile.set_preference("browser.helperApps.neverAsk.openFile","application/csv,application/excel,application/vnd.msexcel,application/vnd.ms-excel,text/anytext,text/comma-separated-values,text/csv,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/octet-stream"); 
    profile.set_preference("browser.helperApps.alwaysAsk.force", False); 
    profile.set_preference("browser.download.manager.useWindow", False); 
    profile.set_preference("browser.download.manager.focusWhenStarting", False); 
    profile.set_preference("browser.download.manager.alertOnEXEOpen", False); 
    profile.set_preference("browser.download.manager.showAlertOnComplete", False); 
    profile.set_preference("browser.download.manager.closeWhenDone", True); 
    profile.set_preference("pdfjs.disabled", True); 
+0

nachdem ich verschiedene SO-Lösungen ausprobiert habe, habe ich 'pdfjs.disabled' versucht, wie du es erwähnst, und es hat funktioniert. aber für mich funktioniert es nur in Verbindung mit 'browser.helperApps.neverAsk.saveToDisk', und die anderen Einstellungen werden nicht benötigt. – s2t2

2

sollten Sie versuchen, Vorliebe für xlsx Erweiterung mit der richtigen MIME Typ zu verwenden, die "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ist, aber nicht "application/xlsx":

profile.set_preference('browser.helperApps.neverAsk.saveToDisk', "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") 

Sie können für Microsoft Office Liste der MIME Typen überprüfen Dateien here

+0

Nach der Verwendung dieser Pantomime erscheint auch das gleiche Popup-Fenster. Kannst du mir eine andere Lösung sagen? – user8023364