class Selenium::WebDriver::Safari::Options

Attributes

data_dir[RW]
extensions[R]
port[RW]
skip_extension_installation[RW]

Public Class Methods

new(opts = {}) click to toggle source
# File lib/selenium/webdriver/safari/options.rb, line 8
def initialize(opts = {})
  @extensions = []
  extract_options(opts)
end

Public Instance Methods

add_extension(ext) click to toggle source
# File lib/selenium/webdriver/safari/options.rb, line 13
def add_extension(ext)
  @extensions << verify_safari_extension(ext)
end
as_json() click to toggle source
# File lib/selenium/webdriver/safari/options.rb, line 32
def as_json
  {
    'port'                      => port,
    'dataDir'                   => data_dir,
    'cleanSession'              => clean_session?,
    'extensions'                => extensions_as_json,
    'skipExtensionInstallation' => skip_extension_installation?
  }
end
clean_session?() click to toggle source
# File lib/selenium/webdriver/safari/options.rb, line 17
def clean_session?
  !!@clean_session
end
skip_extension_installation?() click to toggle source
# File lib/selenium/webdriver/safari/options.rb, line 21
def skip_extension_installation?
  !!@skip_extension_installation
end
to_capabilities() click to toggle source
# File lib/selenium/webdriver/safari/options.rb, line 25
def to_capabilities
  caps = Remote::Capabilities.safari
  caps.merge!('safari.options' => as_json)

  caps
end

Private Instance Methods

extensions_as_json() click to toggle source
# File lib/selenium/webdriver/safari/options.rb, line 44
def extensions_as_json
  @extensions.map do |path|
    {'filename' => path.basename, 'contents' => Base64.strict_encode64(path.read) }
  end
end
extract_options(opts) click to toggle source
# File lib/selenium/webdriver/safari/options.rb, line 50
def extract_options(opts)
  @port          = Integer(opts[:port] || PortProber.random)
  @data_dir      = opts[:custom_data_dir] || opts[:data_dir]
  @clean_session = opts[:clean_session]

  Array(opts[:extensions]).each { |ext| add_extension(ext) }

  if opts.key?(:install_extension)
    @skip_extension_installation = !opts[:install_extension]
  elsif opts.key?(:skip_extension_installation)
    @skip_extension_installation = opts[:skip_extension_installation]
  else
    @skip_extension_installation = false
  end
end
verify_safari_extension(path) click to toggle source
# File lib/selenium/webdriver/safari/options.rb, line 66
def verify_safari_extension(path)
  pn = Pathname.new(path)

  unless pn.file? && pn.extname == '.safariextz'
    raise ArgumentError, "invalid Safari extension path: #{path}"
  end

  pn
end