Class: Selenium::WebDriver::Firefox::Profile

Inherits:
Object
  • Object
show all
Includes:
ProfileHelper
Defined in:
lib/selenium/webdriver/firefox/profile.rb

Constant Summary collapse

VALID_PREFERENCE_TYPES =
[TrueClass, FalseClass, Integer, Float, String].freeze
WEBDRIVER_PREFS =
{
  port: 'webdriver_firefox_port',
  log_file: 'webdriver.log.file'
}.freeze
DEFAULT_PREFERENCES =
{
  'browser.newtabpage.enabled' => false,
  'browser.startup.homepage' => 'about:blank',
  'browser.usedOnWindows10.introURL' => 'about:blank',
  'network.captive-portal-service.enabled' => false,
  'security.csp.enable' => false
}.freeze
LOCK_FILES =
%w[.parentlock parent.lock lock].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ProfileHelper

#encoded, included, #to_json

Constructor Details

#initialize(model = nil) ⇒ Profile

Create a new Profile instance

Examples:

User configured profile


profile = Selenium::WebDriver::Firefox::Profile.new
profile['network.proxy.http'] = 'localhost'
profile['network.proxy.http_port'] = 9090

driver = Selenium::WebDriver.for :firefox, :profile => profile


73
74
75
76
77
78
# File 'lib/selenium/webdriver/firefox/profile.rb', line 73

def initialize(model = nil)
  @model = verify_model(model)

  @additional_prefs = read_model_prefs
  @extensions = {}
end

Instance Attribute Details

#log_fileObject

Returns the value of attribute log_file.



42
43
44
# File 'lib/selenium/webdriver/firefox/profile.rb', line 42

def log_file
  @log_file
end

#nameObject (readonly)

Returns the value of attribute name.



42
43
44
# File 'lib/selenium/webdriver/firefox/profile.rb', line 42

def name
  @name
end

Class Method Details

.decoded(json) ⇒ Object



56
57
58
# File 'lib/selenium/webdriver/firefox/profile.rb', line 56

def decoded(json)
  JSON.parse(json)
end

.from_name(name) ⇒ Object



49
50
51
52
53
54
# File 'lib/selenium/webdriver/firefox/profile.rb', line 49

def from_name(name)
  profile = ini[name]
  return profile if profile

  raise Error::WebDriverError, "unable to find profile named: #{name.inspect}"
end

.iniObject



45
46
47
# File 'lib/selenium/webdriver/firefox/profile.rb', line 45

def ini
  @ini ||= ProfilesIni.new
end

Instance Method Details

#[]=(key, value) ⇒ Object

Set a preference for this particular profile.



99
100
101
102
103
104
105
106
107
108
109
# File 'lib/selenium/webdriver/firefox/profile.rb', line 99

def []=(key, value)
  unless VALID_PREFERENCE_TYPES.any? { |e| value.is_a? e }
    raise TypeError, "expected one of #{VALID_PREFERENCE_TYPES.inspect}, got #{value.inspect}:#{value.class}"
  end

  if value.is_a?(String) && Util.stringified?(value)
    raise ArgumentError, "preference values must be plain strings: #{key.inspect} => #{value.inspect}"
  end

  @additional_prefs[key.to_s] = value
end

#add_extension(path, name = extension_name_for(path)) ⇒ Object



131
132
133
134
135
# File 'lib/selenium/webdriver/firefox/profile.rb', line 131

def add_extension(path, name = extension_name_for(path))
  WebDriver.logger.deprecate('Firefox::Profile#add_extension', 'Driver#install_addon',
                             id: :firefox_profile)
  @extensions[name] = Extension.new(path)
end

#layout_on_diskObject



80
81
82
83
84
85
86
87
88
89
90
# File 'lib/selenium/webdriver/firefox/profile.rb', line 80

def layout_on_disk
  profile_dir = @model ? create_tmp_copy(@model) : Dir.mktmpdir('webdriver-profile')
  FileReaper << profile_dir

  install_extensions(profile_dir)
  delete_lock_files(profile_dir)
  delete_extensions_cache(profile_dir)
  update_user_prefs_in(profile_dir)

  profile_dir
end

#load_no_focus_lib=(value) ⇒ Object



121
122
123
124
# File 'lib/selenium/webdriver/firefox/profile.rb', line 121

def load_no_focus_lib=(value)
  WebDriver.logger.deprecate('Firefox::Profile#load_no_focus_lib=', id: :firefox_profile)
  @load_no_focus_lib = value
end

#port=(port) ⇒ Object



111
112
113
114
# File 'lib/selenium/webdriver/firefox/profile.rb', line 111

def port=(port)
  WebDriver.logger.deprecate('Firefox::Profile#port=', 'the Service class', id: :firefox_profile)
  self[WEBDRIVER_PREFS[:port]] = port
end

#proxy=(proxy) ⇒ Object

Raises:

  • (TypeError)


137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# File 'lib/selenium/webdriver/firefox/profile.rb', line 137

def proxy=(proxy)
  raise TypeError, "expected #{Proxy.name}, got #{proxy.inspect}:#{proxy.class}" unless proxy.is_a? Proxy

  case proxy.type
  when :manual
    self['network.proxy.type'] = 1

    set_manual_proxy_preference 'http', proxy.http
    set_manual_proxy_preference 'ssl', proxy.ssl
    set_manual_proxy_preference 'socks', proxy.socks

    self['network.proxy.no_proxies_on'] = proxy.no_proxy || ''
  when :pac
    self['network.proxy.type'] = 2
    self['network.proxy.autoconfig_url'] = proxy.pac
  when :auto_detect
    self['network.proxy.type'] = 4
  else
    raise ArgumentError, "unsupported proxy type #{proxy.type}"
  end
end

#secure_ssl=(value) ⇒ Object



116
117
118
119
# File 'lib/selenium/webdriver/firefox/profile.rb', line 116

def secure_ssl=(value)
  WebDriver.logger.deprecate('Firefox::Profile#secure_ssl=', id: :firefox_profile)
  @secure_ssl = value
end