2013-08-29 13 views
9

Chcę automatycznie pobierać pliki i zapisywać je w katalogu, wszystko jest zrobione, ale firefox nadal zapisuje pliki w folderze pobierania użytkownika, np. C:\users\root\Downloadsselenium nie ustawia downloaddir w FirefoxProfile

funkcja w klasie 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 

następnie

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

Spróbuj użyć' \\ 'zamiast'/'. Miałem ten problem jakiś czas temu. – enginefree

+0

nie działa :(spróbuję użyć os.path.join –

+0

Czy na pewno istnieje? Najlepiej będzie upewnić się w swoim skrypcie, coś w stylu 'if os.path.exists' lub' os.isfile ' – enginefree

Odpowiedz

15

Istnieje kilka metod do rozwiązania tego problemu,

  1. Upewnij się, że ścieżka jest prawidłowa. Użyj coś, os.path.exists lub os.isfile
  2. Gdy Firefox uruchamia ze sterownikiem selenu, przejdź do about:config i sprawdzić patrzeć browser.download.dir, aby upewnić się, że nastąpiła zmiana.
  3. Wreszcie, upewnij się, że profile.set_preference (profile.set_preference("browser.download.folderList",2) ma 2 jako drugi argument, ponieważ 0 oznacza pobrać na pulpit, 1 oznacza ściągnąć do domyślnego „Downloads” katalogu 2 oznacza korzystanie z katalogu określonego w " browser.download.dir”
  4. Upewnij się, że ścieżka jest oznaczona pleców ukośniki '\' a nie do przodu ukośniki '/'
+2

Pomogło mi to! Musiałem również upewnić się, że mój ciąg folderów był ** backslashed ** zamiast przekierowania do przodu: 'C:/Downloads' nie działało, ale' C: \\ Downloads' zrobił. –

Powiązane problemy