【问题标题】:ChromeOptions To Not Prompt For Download When Running RemoteDriver运行 RemoteDriver 时 Chrome 选项不提示下载
【发布时间】:2016-04-27 22:15:05
【问题描述】:

我正在尝试调试为什么在无头 linux 主机上运行远程 webdriver 测试时,chrome 会显示下载对话框。我相信chrome版本是45。

几个环境细节

  1. 硒 2.53(宝石)
  2. Selenium 2.53 服务器 Jar
  3. Chrome 驱动程序 2.21

框架/测试是用 Ruby 编写的,利用 Capybara 来驱动 Web 测试。以下是远程驱动程序如何初始化的简要 sn-p。

            prefernces = {
          :download => {
            :prompt_for_download => false, 
            :default_directory => '/home/john.doe/Downloads/'
          }
        }
        caps = Selenium::WebDriver::Remote::Capabilities.chrome()
        caps['chromeOptions'] = {'prefs' => prefernces}

      http_client = Selenium::WebDriver::Remote::Http::Default.new
      http_client.timeout = 240
      options = {
        browser: :remote,
        url: "http://<server_url>:4444/wd/hub",
        desired_capabilities: caps,
        http_client: http_client
      }
      # Returns Remote Driver
      Capybara::Selenium::Driver.new(app, options)

我已经通过集线器验证了 chromeOptions 已设置,但是当下载文件时,我们会看到一个文件对话框提示。

我已竭尽全力寻找解决此问题的方法。感谢您的帮助和考虑!

【问题讨论】:

    标签: ruby selenium-webdriver capybara selenium-chromedriver chrome-options


    【解决方案1】:

    尝试从 default_directory 的末尾删除 / 并设置 directory_upgrade: true。除此之外,请确保浏览器有权写入所选目录(还要注意首选项的正确拼写)

     preferences = {
          :download => {
            :default_directory => '/home/john.doe/Downloads',
            :directory_upgrade => true,
            :prompt_for_download => false, 
    
          }
        }
    caps = Selenium::WebDriver::Remote::Capabilities.chrome(
      'chromeOptions' => {'prefs' => preferences}
    )
    

    【讨论】:

    • 感谢您发现拼写错误。它自始至终都是错误的,但它是固定的。我显然没有注意。我会试试你的建议!
    • 谢谢大家,看来是权限问题。
    【解决方案2】:

    这是一个使用 Capybara / Selenium / Chrome 下载文件的示例:

    require 'capybara'
    require 'selenium-webdriver'
    
    Capybara.register_driver :chrome do |app|
      Capybara::Selenium::Driver.new(app,
        :url => "http://localhost:4444/wd/hub",
        :browser => :chrome,
        :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome(
          'chromeOptions' => {
            'prefs' => {
              'download.default_directory' => File.expand_path("C:\\Download"),
              'download.directory_upgrade' => true,
              'download.prompt_for_download' => false,
              'plugins.plugins_disabled' => ["Chrome PDF Viewer"]
            }
          }
        )
      )
    end
    
    session = Capybara::Session.new(:chrome)
    session.visit "https://www.mozilla.org/en-US/foundation/documents"
    session.click_link "IRS Form 872-C"
    
    sleep 20
    

    【讨论】:

      猜你喜欢
      • 2015-08-31
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      • 1970-01-01
      • 2012-09-27
      相关资源
      最近更新 更多