【发布时间】:2019-03-28 04:31:45
【问题描述】:
我尝试将几个现有的解决方案(1、2)调整到在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