在测试期间,将从Web应用程序下载文件(.html),我必须通过在浏览器上打开它来验证该文件。在非无头模式下,我的测试工作正常。但是每当我要进入无头模式时,该文件就不会被下载到下载路径(即指向“user.dir”)。我的chrome驱动程序版本是2.44.609538,selenium版本是3.14。
您是否从命令行运行测试?
因为,根据this question和this的答案,当您通过命令行运行它时,您的user.dir
对应于您的全局用户目录(C:\ users \ username)。
这适用于我们的ruby实现:
Capybara.register_driver :scrapping_driver do |app|
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--disable-popup-blocking')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--window-size=1366,2000')
options.add_preference(:download, directory_upgrade: true,
prompt_for_download: false,
default_directory: "#{Rails.root}/")
options.add_preference(:browser, set_download_behavior: { behavior: 'allow' })
Selenium::WebDriver::Service.driver_path = Webdrivers::Chromedriver.driver_path
driver = Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end
注意下载行为