当前位置: 首页 > 知识库问答 >
问题:

铬无头下载pdf使用水豚和硒

左丘善
2023-03-14

我在我的Ruby on Rails(5.2.1)项目中使用chrome headless with Selenium(3.14.0)和Capybara(3.8.0),我有一个测试,它可以在无头chrome中工作,但不能在无头chrome中工作。我在谷歌chrome稳定版69上使用的是“--无头”标志。

我已经用下面的设置了我的无头chrome,这适用于所有不下载文件的测试。

download_path="#{Rails.root}/tmp/downloads"

Capybara.register_driver(:headless_chrome) do |app|
  caps = Selenium::WebDriver::Remote::Capabilities.chrome(
    chromeOptions: {
      prefs: {
        'download.default_directory' => download_path,
        "download.extensions_to_open" => "applications/pdf",
        'download.directory_upgrade' => true,
        'download.prompt_for_download' => false,
        'plugins.plugins_disabled' => ["Chrome PDF Viewer"]
      },
      binary: "/opt/google/chrome/google-chrome",
      args: %w[headless disable-gpu window-size=1920,1080]
    }
  )
  Capybara::Selenium::Driver.new(
    app,
    browser: :chrome,
    desired_capabilities: caps
  )
end
@driver = Selenium::WebDriver.for :chrome, options: options

bridge = @driver.send(:bridge)
path = '/session/:session_id/chromium/send_command'
path[':session_id'] = bridge.session_id
bridge.http.call(:post, path, cmd: 'Page.setDownloadBehavior',
                 params: {
                   behavior: 'allow',
                   downloadPath: download_path
                 })

共有1个答案

漆雕奇
2023-03-14

您不再需要手动发送它,它已作为selenium::WebDriver::Chrome::Server#download_path=添加到selenium中。您可以通过Capybara::Selenium::driver实例在驱动程序注册中设置它

...
Capybara::Selenium::Driver.new(
  app,
  browser: :chrome,
  desired_capabilities: caps
).tap { |d| d.browser.download_path = <your download path> }
 类似资料:
  • 如何让下载以无头模式启动?

  • 问题内容: 我正在使用python-selenium和Chrome 59,并尝试自动执行简单的下载序列。当我正常启动浏览器时,下载有效,但是当我以无头模式运行时,下载不起作用。 我什至尝试添加默认路径: 在常规实现中,添加默认路径是可行的,但是无头版本仍然存在相同的问题。 如何使下载以无头模式开始? 问题答案: 是的,这是安全的“功能”。如前所述,这里是Bug讨论:https : //bugs.c

  • 我是cucumber和水豚的新手,我对以下错误感到困惑: 在我的功能中,我有: 我的步骤如下所示: 我尝试了“click(button\u text)和click\u link”方法。我想这可能是我没有看到的明显的东西。我试图找到按钮元素的css定位器,然后单击该元素。我认为regex不需要更改,因为我正在更改“button\u text”局部变量的内容。还是我?

  • 在我的Rails项目中,我通常使用在我的应用程序中构建/创建用户。我想知道在使用Cucumber, Capybara时是否可以使用来测试用户与我的应用程序的交互。没有数据库可以保存它们,我只是想存储它们的凭据 我可以有很多用户希望为每个用户创建工厂(除非有更好的Cucumber方法)。 在我的支持文件夹中,我可以创建一个Factorys文件夹,然后创建一个。保存每个用户的rb文件。 在我的文件中,

  • 我的场景是站点上的单击图标打开文件浏览器。是否可以将图像附加到打开的文件浏览器窗口。我的配置是Docker,水豚,硒驱动程序。我正在测试无头和无头浏览器(Chrome)

  • headless Chrome可以通过MacOS上的Selenium Webdriver使用自签名证书吗? 我试图让Rails系统测试由SSL上的headless Chrome驱动。 测试设置 样品测试 页面内容: MacOS 10.13.6 Rails 5.2.1 Ruby 2.4.1 (gem)3.5.1 (gem)3.14.0 (gem)2.34 铬68.0.3440.106。也尝试过 谷歌