selenium没有在FirefoxProfile中设置downloaddir

时间:2013-08-29 21:58:23

标签: python firefox selenium

我想自动下载文件并将其保存在目录中,一切都已完成,但是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'

1 个答案:

答案 0 :(得分:15)

解决此问题的方法有几种,

  1. 确保路径有效。使用os.path.existsos.isfile
  2. 之类的内容
  3. 当使用硒驱动程序启动Firefox时,请导航至about:config并查看查找browser.download.dir,以确保有更改。
  4. 最后,请确保profile.set_preferenceprofile.set_preference("browser.download.folderList",2)有2作为第二个参数,因为0表示要下载到桌面,1表示要下载到默认的“下载”目录,2表示使用您在“browser.download.dir”中指定的目录
  5. 确保您的路径记录为反斜杠'\'不向前 斜杠'/'