如何使用远程Firefox Webdriver下载文件?

时间:2018-10-23 20:35:38

标签: python selenium firefox remotewebdriver

我已尝试将几种现有解决方案(12)改编为在selenium/standalone-firefox Docker container中运行的远程 Firefox Webdriver:

options = Options()
options.set_preference('browser.download.dir', '/src/app/output')
options.set_preference('browser.download.folderList', 2)
options.set_preference('browser.download.manager.showWhenStarting', False)
options.set_preference('browser.helperApps.alwaysAsk.force', False)
options.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf')
options.set_preference('pdfjs.disabled', True)
options.set_preference('pdfjs.enabledCache.state', False)
options.set_preference('plugin.disable_full_page_plugin_for_types', False)

cls.driver = webdriver.Remote(
    command_executor='http://selenium:4444/wd/hub',
    desired_capabilities={'browserName': 'firefox', 'acceptInsecureCerts': True},
    options=options
)

浏览并单击相关的下载按钮可以正常工作,但是该文件永远不会出现在下载目录中。我已经验证了我能想到的一切:

  • Selenium容器中的用户可以在/ src / app / output中创建文件,并且这些文件在主机OS中可见。
  • 我可以使用桌面浏览器成功下载文件。
  • 响应内容类型为application/pdf

我想念什么?

1 个答案:

答案 0 :(得分:0)

研究人员发现,在进行其他更改时,服务器返回了文本/普通文档,而不是PDF文件。作为参考,这是我可以使用的最简单的选项集:

options.set_preference('browser.download.dir', DOWNLOAD_DIRECTORY)
options.set_preference('browser.download.folderList', 2)
options.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf')
options.set_preference('pdfjs.disabled', True)