use*_*395 2 ruby selenium ruby-on-rails selenium-chromedriver
我有一个rails应用程序,正在运行capybara和selenium,并使用chrome进行端到端测试.我想在运行chrome headless时设置默认下载目录.
以下是我在support/env.rb中设置的方法:
Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome)
end
Capybara.register_driver :headless_chrome do |app|
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
'chromeOptions' => {
'args' => %w(headless disable-gpu window-size=1920,1080),
'prefs' => {
'download.default_directory' => DownloadHelpers::PATH.to_s
}
}
)
Capybara::Selenium::Driver.new app,
browser: :chrome,
#args: ["--window-size=1024,768"], #UNCOMMENT TO HAVE BROWSER WINDOW POP UP
desired_capabilities: capabilities
end
Run Code Online (Sandbox Code Playgroud)
我注意到,如果我离开
'args' => %w(headless disable-gpu window-size=1920,1080)
Run Code Online (Sandbox Code Playgroud)
然后设置默认下载目录,但是,浏览器会自动弹出,我要禁用它.
当我有两个:
'args' => %w(headless disable-gpu window-size=1920,1080),
'prefs' => {
'download.default_directory' => DownloadHelpers::PATH.to_s
}
Run Code Online (Sandbox Code Playgroud)
它运行无头,但未设置默认下载路径.
我有以下版本:
水豚(2.14.2)
selenium-webdriver(3.6.0)
chromedriver-helper(1.1.0)
我使用了https://bugs.chromium.org/p/chromium/issues/detail?id=696481#c78和
将我的设置更改为:
Capybara.register_driver :selenium do |app|
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--disable-popup-blocking')
options.add_argument('--window-size=1366,768')
options.add_preference(:download, directory_upgrade: true,
prompt_for_download: false,
default_directory:
'/User/paulo/projects/app/tmp')
options.add_preference(:browser, set_download_behavior: { behavior: 'allow' })
driver = Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
bridge = driver.browser.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: '/User/paulo/projects/app/tmp'
})
driver
end
Run Code Online (Sandbox Code Playgroud)
请注意,您必须输入自己的downloadPath.
| 归档时间: |
|
| 查看次数: |
2267 次 |
| 最近记录: |