12

我想自动下载文件并将它们保存在目录中,一切都完成了,但 Firefox 仍然将文件保存在用户下载文件夹中,例如C:\users\root\Downloads

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

然后

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

配置:

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

1 回答 1

18

有几种方法可以解决这个问题,

  1. 确保路径有效。使用类似的东西,os.path.exists或者os.isfile
  2. Firefox使用 selenium 驱动程序启动时,导航到about:config并检查查找browser.download.dir,以确保有更改。
  3. 最后,确保profile.set_preference( profile.set_preference("browser.download.folderList",2)2作为第二个参数,因为 0意味着下载到桌面,1意味着下载到默认的“Downloads”目录,2意味着使用您在“browser.download.dir”中指定的目录
  4. 确保使用反斜杠“\”而不是正斜杠“/”记录您的路径
于 2013-08-30T15:10:42.380 回答