selenium没有在FirefoxProfile中设置downloaddir

Ben*_*hak 10 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
Run Code Online (Sandbox Code Playgroud)

然后

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

配置:

config['downloads'] = 'Q:/web2py_src/web2py/applications/internet2letter/private/testing/selenium/downloads'
config['handlers'] = 'application/pdf'
Run Code Online (Sandbox Code Playgroud)

eng*_*ree 16

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

  1. 确保路径有效.使用像,os.path.existsos.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. 确保用反斜杠标记你的路径'\'而不是正斜杠'/'

  • 这对我有帮助!我还必须确保我的文件夹字符串是**反向**而不是向前削减:`C:/ Downloads`不起作用,但`C:\\ Downloads`做了. (2认同)