2013-08-29 17 views
9

içinde downloaddir ayarlanmıyor, dosyaları otomatik olarak indirmek ve dizinde saklamak istiyorum, her şey bitti ama firefox dosyaları kullanıcı indirme klasöründe saklar. C:\users\root\Downloadsselenium, FirefoxProfile

sınıf PyWebBot işlevi

@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 

sonra

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

yapılandırma:

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

kullanmayı deneyin '\' yolunuz geri eğik çizgi ile belirtilen olduğundan emin olun. Bir süre önce bu problemi yaşadım. – enginefree

+0

işe yaramadı :(os.path.join'i kullanmaya çalışacağım –

+0

Varolduğundan emin misin? Komut dosyasında, os.path.exists' veya 'os.isfile gibi bir şeyden emin olmak için en iyisi olacak ' – enginefree

cevap

15

bu sorun için bir çözüm birkaç yöntem vardır,

  1. Yolun geçerli olduğundan emin olun. Emin değişikliği oldu yapmak için, browser.download.dir bakmak gibi bir şey os.path.exists veya
  2. Firefox selenyum sürücüsü ile başlattı os.isfile, about:config gidin kullanın ve atın. 0 masaüstüne indirmek için anlamı beri
  3. Son olarak, profile.set_preference (profile.set_preference("browser.download.folderList",2) ikinci argüman olarak 2 sahip olduğundan emin olun, 1 varsayılan "İndirme" dizinine indirmek için anlamı, 2 "Eğer belirttiğiniz dizin kullanmak demektir browser.download.dir"
  4. ` yerine `/` \\ `değil ileriye eğik çizgi '/'
+2

Bu bana yardımcı oldu! Ayrıca klasör dizgemenin eğik çizgi yerine ** ters eğik çizgi ** olduğundan emin olmalıydım: 'C:/Downloads' çalışmadı, ancak 'C: \\ Downloads' yaptı. –