【问题标题】:selenium doesn't set downloaddir in FirefoxProfileselenium 没有在 FirefoxProfile 中设置下载目录
【发布时间】:2013-09-02 12:25:51
【问题描述】:

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

【问题讨论】:

  • 尝试使用 ` \\ ` 而不是 /。我前段时间遇到过这个问题。
  • 没用 :( 我会尝试使用 os.path.join
  • 你确定它存在吗?最好确保在您的脚本中,例如 if os.path.existsos.isfile
  • 没有用,我在哪里可以找到 set_preference 的所有选项?也许还有其他关于下载文件夹的选项,而不是也应该设置的 downloaddir、dir、defaultfolder .. >>> os.path.isfile(x) False >>> os.path.exists(x) True >>> x 'Q:\\web2py_src\\web2py\\applications\\internet2letter\\private\\testing\\seleni um\\downloads'
  • 我认为还有另一种方法可以帮助您。当firefox启动时,转到about:config,找到browser.download.dir并检查该值是否已设置。你做错的另一件事是profile.set_preference("browser.download.folderList",2)。应该是2 而不是1

标签: python firefox selenium


【解决方案1】:

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

  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 表示下载到默认的“下载”目录, 2 表示使用你在“browser.download.dir”中指定的目录
  4. 确保您的路径用反斜杠“\”而不是向前 斜线'/'

【讨论】:

  • 这对我有帮助!我还必须确保我的文件夹字符串是反斜杠而不是正斜杠:C:/Downloads 不起作用,但 C:\\Downloads 起作用。
猜你喜欢
  • 2021-09-03
  • 1970-01-01
  • 2020-01-28
  • 2016-04-03
  • 1970-01-01
  • 2020-07-04
  • 2022-11-11
  • 2020-06-04
  • 2013-09-01
相关资源
最近更新 更多