ruby - 保存文件弹出问题
问题描述
问题
我已经通过设置配置文件变量尝试了所有可能性,但是每次我尝试使用我的自动化框架下载文件时,Firefox 中的保存对话框仍然出现
正在尝试下载的文件的内容类型是 application/csv(对于 1 个文件,其余文件在下面的代码片段中提到)
设置 -
Firefox 版本 - 52.8.0(64 位)
宝石文件
source 'https://rubygems.org'
gem 'actionpack', '~> 4.2.4', require: false
gem 'activemodel', '~> 4.2.4'
gem 'Ascii85'
gem 'browserstack-local'
gem 'cucumber', '< 2.0.0'
gem 'cukeforker'
gem 'cukeforker-webdriver'
gem 'headless'
gem 'httparty'
gem 'json'
gem 'mysql2'
gem 'nokogiri'
gem 'pdf-reader'
gem 'pry'
gem 'rubocop', '~> 0.52.1', require: false
gem 'selenium-webdriver', '3.6.0' # Best practice: keep in sync with hub version
gem 'site_prism'
gem 'uuid'
环境.rb
Before do
firefox_profile = Selenium::WebDriver::Firefox::Profile.new
firefox_profile['browser.download.dir'] = ENV['ENV_TEMP_PATH']
firefox_profile['browser.download.folderList'] = 2
firefox_profile['browser.download.panel.shown'] = false
firefox_profile['browser.helperApps.alwaysAsk.force'] = false
firefox_profile['browser.download.manager.showWhenStarting'] = false
firefox_profile['browser.helperApps.neverAsk.openFile'] = 'application/csv, application/octet-stream, text/csv, application/zip, application/pdf, application/xml, application/x-x509-ca-cert'
firefox_profile['browser.helperApps.neverAsk.saveToDisk'] = 'application/csv, application/octet-stream, text/csv, application/zip, application/pdf, application/xml, application/x-x509-ca-cert'
firefox_profile['timeout'] = 480000
firefox_profile['pdfjs.disabled'] = true
firefox_profile['resynchronization_timeout'] = 90
firefox_profile['resynchronize '] = true
firefox_profile['dom.max_chrome_script_run_time'] = 0
firefox_profile['dom.max_script_run_time'] = 0
Capybara.default_selector = :css
Capybara.ignore_hidden_elements = true
Capybara.run_server = false
client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 240
Capybara.default_driver = :firefox
Capybara.register_driver :firefox do |app|
Capybara::Selenium::Driver.new(app, browser: :firefox, profile: firefox_profile, marionette: false, http_client: client)
end
end
请注意 -
我也尝试过关注
firefox_profile['browser.helperApps.neverAsk.openFile'] = 'application/csv; application/octet-stream; text/csv; application/zip; application/pdf; application/xml; application/x-x509-ca-cert'
firefox_profile['browser.helperApps.neverAsk.saveToDisk'] = 'application/csv; application/octet-stream; text/csv; application/zip; application/pdf; application/xml; application/x-x509-ca-cert'
在我们的自动化活跃社区中寻求专家的帮助
解决方案
为什么将 'browser.helperApps.neverAsk.openFile' 和 ''browser.helperApps.neverAsk.saveToDisk' 设置为相同的 mime 类型?这些是相互冲突的设置,因为一个是说在浏览器中打开这些文件类型,另一个是说将它们保存到磁盘(在浏览器中打开优先)。另外 - Firefox 52 是 2 年前发布的,可能是时候升级了。
文件下载在 Capybaras 自己的测试套件中进行了测试,因此您可以看到那里所需的最小设置(显然根据需要调整 mime 类型) - https://github.com/teamcapybara/capybara/blob/master/spec/selenium_spec_marionette.rb# L13
推荐阅读
- spring-data-jpa - Spring JPA Entities:Ignite错误、LAZY fetching、too-m相关问题,最小化数据库使用和使用Ignite
- python - 在不同版本中使用 pyplot 总是会产生“TypeError: 'numpy.float64' object is not callable”
- c++ - C++ 程序给出了太多参数警告
- php - Memcached 无论如何都会在 300 秒后过期
- c++ - 我需要声明一个包含整数向量的 4x4 矩阵
- reactjs - React 应用程序突然停止(在开发和生产中)
- mongodb - 仅当文档在 MongoDB 中更新时才更新字段
- c# - HttpResponse 设置 Cookie
- sendgrid-api-v3 - SendGrid - 没有在反弹事件中返回 custom_args
- mongodb - 有没有办法向 mongodb 查询添加计数器?