123456789_123456789_123456789_123456789_123456789_

Class: Selenium::WebDriver::Firefox::Service

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
Inherits: Selenium::WebDriver::Service
Defined in: rb/lib/selenium/webdriver/firefox/service.rb

Constant Summary

Class Attribute Summary

Class Method Summary

::Selenium::WebDriver::Service - Inherited

.chrome, .edge, .firefox, .ie,
.internet_explorer

Alias for Service.ie.

.microsoftedge

Alias for Service.edge.

.msedge

Alias for Service.edge.

.safari,
.new

End users should use a class method for the desired driver, rather than using this directly.

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(args: nil) ⇒ Service

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/firefox/service.rb', line 29

def initialize(args: nil, **)
  args = Array(args.dup)
  unless args.any? { |arg| arg.include?('--connect-existing') || arg.include?('--websocket-port') }
    args << '--websocket-port'
    args << '0'
  end

  configure_debug_args(args) if ENV.key?('SE_DEBUG')

  super
end

Instance Method Details

#configure_debug_args(args) (private)

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/firefox/service.rb', line 49

def configure_debug_args(args)
  # An explicit geckodriver log setting is more specific than Selenium's
  # generic SE_DEBUG fallback, so preserve it and skip adding `-v`.
  if args.any? { |arg| arg.start_with?('--log') }
    warn_explicit_log_preference unless @log_preference_warned
    @log_preference_warned = true
    args.reject! { |arg| arg.start_with?('-v') }
    return
  end

  args << '-v' unless args.any? { |arg| /\A-v+\z/.match?(arg) }
end

#launch

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/firefox/service.rb', line 41

def launch
  configure_debug_args(args) if ENV.key?('SE_DEBUG')

  super
end

#warn_explicit_log_preference (private)

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/firefox/service.rb', line 62

def warn_explicit_log_preference
  WebDriver.logger.warn('SE_DEBUG is set; preserving user-specified geckodriver --log setting instead of ' \
                        'adding -v', id: :se_debug)
end