gpt4 book ai didi

ruby-on-rails - 使用 capybara 和 Selenium 的 Chrome headless 下载 pdf

转载 作者:行者123 更新时间:2023-12-04 23:36:27 28 4
gpt4 key购买 nike

我在我的 Ruby on Rails (5.2.1) 项目中使用 Selenium (3.14.0) 和 Capybara (3.8.0) headless Chrome ,并且我有一个测试,它适用于非 headless Chrome 但不适用于 headless Chrome 。我在 google chrome 稳定版 69 上使用了“--headless”标志。

我已经使用以下内容设置了我的 headless 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

我读过我应该向 selenium chrome 驱动程序发送命令以允许下载,但我不知道如何使用我的设置来做到这一点。这是我正在尝试进行的工作,但使用我的设置; (不是来自我的代码库);
@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
})

我如何在我的设置中访问 selenium 桥,以便我可以发送这个 http 调用?

最佳答案

您不再需要手动发送它作为 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> }

关于ruby-on-rails - 使用 capybara 和 Selenium 的 Chrome headless 下载 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52640691/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com