class Selenium::WebDriver::Firefox::Legacy::Driver

Driver implementation for Firefox using legacy extension. @api private

Public Class Methods

new(opts = {}) click to toggle source
Calls superclass method Selenium::WebDriver::Driver.new
# File lib/selenium/webdriver/firefox/legacy/driver.rb, line 32
def initialize(opts = {}) # rubocop:disable Metrics/AbcSize
  WebDriver.logger.deprecate 'Selenium support for legacy Firefox', 'Firefox via marionette'

  opts[:desired_capabilities] ||= Remote::Capabilities.firefox_legacy

  if opts.key? :proxy
    WebDriver.logger.deprecate ':proxy', "Selenium::WebDriver::Remote::Capabilities.firefox(proxy: #{opts[:proxy]})"
    opts[:desired_capabilities].proxy = opts.delete(:proxy)
  end

  unless opts.key?(:url)
    port = opts.delete(:port) || DEFAULT_PORT
    profile = opts.delete(:profile)

    Binary.path = opts[:desired_capabilities][:firefox_binary] if opts[:desired_capabilities][:firefox_binary]
    @launcher = Launcher.new Binary.new, port, profile
    @launcher.launch
    opts[:url] = @launcher.url
  end

  listener = opts.delete(:listener)
  WebDriver.logger.info 'Skipping handshake as we know it is OSS.'
  desired_capabilities = opts.delete(:desired_capabilities)
  bridge = Remote::Bridge.new(opts)
  capabilities = bridge.create_session(desired_capabilities)
  @bridge = Remote::OSS::Bridge.new(capabilities, bridge.session_id, opts)

  begin
    super(@bridge, listener: listener)
  rescue
    @launcher&.quit
    raise
  end
end

Public Instance Methods

browser() click to toggle source
# File lib/selenium/webdriver/firefox/legacy/driver.rb, line 67
def browser
  :firefox
end
quit() click to toggle source
Calls superclass method Selenium::WebDriver::Driver#quit
# File lib/selenium/webdriver/firefox/legacy/driver.rb, line 71
def quit
  super
  nil
ensure
  @launcher.quit
end