2013-08-29 2 views
9

Ich möchte Dateien automatisch herunterladen und im Verzeichnis speichern, alles ist erledigt, aber firefox stills speichert Dateien im Benutzerdownload-Ordner, z. C:\users\root\Downloadsselen setzt downloaddir nicht in FirefoxProfile

die Funktion in der Klasse PyWebBot

@staticmethod 
def FirefoxProfile(path, handlers): 
    from selenium import webdriver 

    profile = webdriver.FirefoxProfile() 
    profile.set_preference("browser.download.folderList",1) 
    profile.set_preference("browser.download.manager.showWhenStarting",False) 
    profile.set_preference("browser.download.dir", path) 
    profile.set_preference("browser.download.downloadDir", path) 
    profile.set_preference("browser.download.defaultFolder", path) 
    profile.set_preference("browser.helperApps.alwaysAsk.force", False) 
    profile.set_preference("browser.helperApps.neverAsk.saveToDisk", handlers) 
    profile.set_preference("pdfjs.disabled", True) 
    profile.update_preferences() 

    return profile 

dann

def setUp(self): 
     self.profile = PyWebBot.FirefoxProfile(config['downloads'], config['handlers']) 
     self.driver = webdriver.Firefox(self.profile) 
    ... 
    ... 

config:

config['downloads'] = 'Q:/web2py_src/web2py/applications/internet2letter/private/testing/selenium/downloads' 
config['handlers'] = 'application/pdf' 
+1

Versuchen Sie es mit' '\\ statt'/'. Ich hatte dieses Problem vor einiger Zeit. – enginefree

+0

hat nicht funktioniert :(Ich werde versuchen, os.path.join –

+0

zu verwenden Sind Sie sicher, dass es existiert? Es wird am besten sein, in Ihrem Skript sicherzustellen, etwas wie 'if os.path.exists' oder' os.isfile ' – enginefree

Antwort

15

Es gibt einige Methoden, um eine Lösung für dieses Problem,

  1. Stellen Sie sicher, dass der Pfad gültig ist. Verwenden Sie so etwas wie, os.path.exists oder os.isfile
  2. Wenn die Firefox startet mit dem Selen-Treiber, navigieren Sie zu about:config und überprüfen Sie die nachschlagen browser.download.dir, um sicherzustellen, dass es eine Änderung war.
  3. Schließlich stellen Sie sicher, dass profile.set_preference (profile.set_preference("browser.download.folderList",2) 2 als zweites Argument hat, da 0 auf dem Desktop zum Download bedeutet, 1 bedeutet zum Standard „Downloads“ Verzeichnis herunterladen, bedeutet 2 Sie das Verzeichnis in angeben verwenden " browser.download.dir“
  4. Stellen Sie sicher, den Weg mit umgekehrten Schrägstrichen festgestellt wird '\' nicht vorwärts Schrägstriche '/'
+2

Das hat mir geholfen! Ich musste auch sicherstellen, dass meine Ordner-Zeichenfolge ** rückgestrichen ** statt nach vorne durchgestrichen wurde: 'C:/Downloads' funktionierte nicht, aber' C: \\ Downloads' tat. –