【问题标题】:Selenium: How do I start Chrome with RailsPanel Extension loaded?Selenium:如何在加载了 RailsPanel 扩展的情况下启动 Chrome?
【发布时间】:2017-05-20 16:55:58
【问题描述】:

这样做的正确方法是什么?

Capybara.register_driver :chrome do |app|
  client = Selenium::WebDriver::Remote::Http::Default.new

  extension_path = '/Users/jill/Documents/rails_panel-master/rails_panel'

  caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"args" => ['--load-extension=' + extension_path]})

  Capybara::Selenium::Driver.new(app, :browser => :chrome, http_client: client, desired_capabilities: caps )
end

此外,--load-extension 可以使用开关,但在 Chromedriver 上几乎没有相关文档。

Capybara::Selenium::Driver.new( app, :browser => :chrome, http_client: client, :switches => ['--load-extension=' + extension_path] )

【问题讨论】:

  • 问题中的技术(-load-extension 适用于 selenium-webdriver (2.53.4),不适用于 selenium-webdriver (3.05)。升级到 3.05 以使用下面的答案中的解决方案。

标签: ruby selenium google-chrome-extension capybara selenium-chromedriver


【解决方案1】:

我从未使用过扩展功能,因此无法保证,但查看 selenium-webdriver 源代码 - https://github.com/SeleniumHQ/selenium/blob/master/rb/lib/selenium/webdriver/chrome/profile.rb#L38 - 显示 Chrome::Profile 对象上的 #add_extension 和 #add_encoded_extensions 方法,因此您可以尝试类似的方法

profile = Selenium::WebDriver::Chrome::Profile.new()
profile.add_extension(extension_path)
Capybara::Selenium::Driver.new(app, browser: :chrome, http_client: client, profile: profile)

【讨论】:

  • 抱歉没用 - Selenium 最近的变化显然破坏了很多配置选项。
  • 这适用于 selenium-webdriver (3.0.5)!我需要从 selenium-webdriver (2.53.4) 捆绑更新。
  • 这也需要一个我用 chrome 打包的 .crx 文件。见,Chrome Extension Packaging。因此扩展路径变成了 extension_path = '/Users/jill/Documents/rails_panel-master/rails_panel.crx'
猜你喜欢
  • 2013-09-03
  • 2021-12-12
  • 2016-04-03
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 2019-09-28
  • 2021-10-11
相关资源
最近更新 更多