【问题标题】:How to download file using remote Firefox webdriver?如何使用远程 Firefox webdriver 下载文件?
【发布时间】:2019-03-28 04:31:45
【问题描述】:

我尝试将几个现有的解决方案(12)调整到在selenium/standalone-firefox Docker container 中运行的remote Firefox 网络驱动程序:

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 中创建文件,这些文件在主机操作系统中可见。
  • 我可以使用我的桌面浏览器成功下载文件。
  • 响应内容类型为application/pdf

我错过了什么?

【问题讨论】:

  • 您缺少下载到运行浏览器的远程计算机或容器的文件。
  • 省去很多麻烦,使用 HTTP 客户端下载文件
  • @CoreyGoldberg 重点是测试前端,所以这不是一个选项。
  • 我记得,我必须添加'pdfjs.enabledCache.state', false 选项才能在firefox 中下载pdf,您可以在下载后截屏以确保firefox 不会打开pdf 而不是下载。您是否也等待文件下载,可能在下载文件之前关闭浏览器。

标签: python selenium firefox remotewebdriver


【解决方案1】:

事实证明,在研究此问题时所做的其他更改导致服务器返回文本/纯文档而不是 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)

【讨论】:

    猜你喜欢
    • 2018-04-14
    • 2016-11-08
    • 2018-05-17
    • 2022-12-18
    • 1970-01-01
    • 2012-06-03
    • 2013-09-16
    • 2018-03-08
    • 1970-01-01
    相关资源
    最近更新 更多