Class: Selenium::WebDriver::Firefox::Profile
- Inherits:
-
Object
- Object
- Selenium::WebDriver::Firefox::Profile
- Defined in:
- lib/selenium/webdriver/firefox/profile.rb
Constant Summary collapse
- ANONYMOUS_PROFILE_NAME =
"WEBDRIVER_ANONYMOUS_PROFILE"
- EXTENSION_NAME =
"[email protected]"
- EM_NAMESPACE_URI =
"http://www.mozilla.org/2004/em-rdf#"
- WEBDRIVER_EXTENSION_PATH =
File.("#{WebDriver.root}/selenium/webdriver/firefox/extension/webdriver.xpi")
Instance Attribute Summary collapse
-
#directory ⇒ Object
readonly
Returns the value of attribute directory.
-
#load_no_focus_lib ⇒ Object
writeonly
Sets the attribute load_no_focus_lib.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#native_events ⇒ Object
writeonly
Sets the attribute native_events.
-
#port ⇒ Object
Returns the value of attribute port.
-
#secure_ssl ⇒ Object
writeonly
Sets the attribute secure_ssl.
Class Method Summary collapse
Instance Method Summary collapse
-
#[]=(key, value) ⇒ Object
Set a preference for this particular profile.
- #absolute_path ⇒ Object
-
#add_extension(path) ⇒ Object
Aadd the extension (directory, .zip or .xpi) at the given path to the profile.
- #add_webdriver_extension(force_creation = false) ⇒ Object
- #assume_untrusted_certificate_issuer=(bool) ⇒ Object
- #assume_untrusted_certificate_issuer? ⇒ Boolean
- #delete_extensions_cache ⇒ Object
- #extensions_dir ⇒ Object
-
#initialize(directory = nil) ⇒ Profile
constructor
Create a new Profile instance.
- #load_no_focus_lib? ⇒ Boolean
- #native_events? ⇒ Boolean
- #secure_ssl? ⇒ Boolean
- #update_user_prefs ⇒ Object
- #user_prefs_path ⇒ Object
Constructor Details
#initialize(directory = nil) ⇒ Profile
Create a new Profile instance
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 37 def initialize(directory = nil) @directory = directory ? create_tmp_copy(directory) : Dir.mktmpdir("webdriver-profile") unless File.directory? @directory raise Error::WebDriverError, "Profile directory does not exist: #{@directory.inspect}" end FileReaper << @directory # TODO: replace constants with options hash @port = DEFAULT_PORT @native_events = DEFAULT_ENABLE_NATIVE_EVENTS @secure_ssl = DEFAULT_SECURE_SSL @untrusted_issuer = DEFAULT_ASSUME_UNTRUSTED_ISSUER @load_no_focus_lib = DEFAULT_LOAD_NO_FOCUS_LIB @additional_prefs = {} end |
Instance Attribute Details
#directory ⇒ Object (readonly)
Returns the value of attribute directory.
11 12 13 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 11 def directory @directory end |
#load_no_focus_lib=(value) ⇒ Object (writeonly)
Sets the attribute load_no_focus_lib
12 13 14 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 12 def load_no_focus_lib=(value) @load_no_focus_lib = value end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
11 12 13 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 11 def name @name end |
#native_events=(value) ⇒ Object (writeonly)
Sets the attribute native_events
12 13 14 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 12 def native_events=(value) @native_events = value end |
#port ⇒ Object
Returns the value of attribute port.
13 14 15 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 13 def port @port end |
#secure_ssl=(value) ⇒ Object (writeonly)
Sets the attribute secure_ssl
12 13 14 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 12 def secure_ssl=(value) @secure_ssl = value end |
Class Method Details
.from_name(name) ⇒ Object
20 21 22 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 20 def from_name(name) ini[name] end |
.ini ⇒ Object
16 17 18 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 16 def ini @ini ||= ProfilesIni.new end |
Instance Method Details
#[]=(key, value) ⇒ Object
Set a preference for this particular profile.
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 61 def []=(key, value) case value when String if Util.stringified?(value) raise ArgumentError, "preference values must be plain strings: #{key.inspect} => #{value.inspect}" end value = %{"#{value}"} when TrueClass, FalseClass, Integer, Float value = value.to_s else raise TypeError, "invalid preference: #{value.inspect}:#{value.class}" end @additional_prefs[key.to_s] = value end |
#absolute_path ⇒ Object
78 79 80 81 82 83 84 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 78 def absolute_path if Platform.win? directory.gsub("/", "\\") else directory end end |
#add_extension(path) ⇒ Object
Aadd the extension (directory, .zip or .xpi) at the given path to the profile.
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 119 def add_extension(path) unless File.exist?(path) raise Error::WebDriverError, "could not find extension at #{path.inspect}" end if File.directory? path root = path else unless %w[.zip .xpi].include? File.extname(path) raise Error::WebDriverError, "expected .zip or .xpi extension, got #{path.inspect}" end root = ZipHelper.unzip(path) end id = read_id_from_install_rdf(root) ext_path = File.join(extensions_dir, id) FileUtils.rm_rf ext_path FileUtils.mkdir_p File.dirname(ext_path), :mode => 0700 FileUtils.cp_r root, ext_path end |
#add_webdriver_extension(force_creation = false) ⇒ Object
104 105 106 107 108 109 110 111 112 113 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 104 def add_webdriver_extension(force_creation = false) ext_path = File.join(extensions_dir, EXTENSION_NAME) if File.exists? ext_path return unless force_creation end add_extension WEBDRIVER_EXTENSION_PATH delete_extensions_cache end |
#assume_untrusted_certificate_issuer=(bool) ⇒ Object
171 172 173 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 171 def assume_untrusted_certificate_issuer=(bool) @untrusted_issuer = bool end |
#assume_untrusted_certificate_issuer? ⇒ Boolean
167 168 169 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 167 def assume_untrusted_certificate_issuer? @untrusted_issuer == true end |
#delete_extensions_cache ⇒ Object
150 151 152 153 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 150 def delete_extensions_cache cache = File.join(directory, "extensions.cache") FileUtils.rm_f cache if File.exist?(cache) end |
#extensions_dir ⇒ Object
142 143 144 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 142 def extensions_dir @extensions_dir ||= File.join(directory, "extensions") end |
#load_no_focus_lib? ⇒ Boolean
159 160 161 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 159 def load_no_focus_lib? @load_no_focus_lib == true end |
#native_events? ⇒ Boolean
155 156 157 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 155 def native_events? @native_events == true end |
#secure_ssl? ⇒ Boolean
163 164 165 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 163 def secure_ssl? @secure_ssl == true end |
#update_user_prefs ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 86 def update_user_prefs prefs = current_user_prefs prefs.merge! OVERRIDABLE_PREFERENCES prefs.merge! @additional_prefs prefs.merge! DEFAULT_PREFERENCES prefs['webdriver_firefox_port'] = @port prefs['webdriver_accept_untrusted_certs'] = !secure_ssl? prefs['webdriver_enable_native_events'] = native_events? prefs['webdriver_assume_untrusted_issuer'] = assume_untrusted_certificate_issuer? # If the user sets the home page, we should also start up there prefs["startup.homepage_welcome_url"] = prefs["browser.startup.homepage"] write_prefs prefs end |
#user_prefs_path ⇒ Object
146 147 148 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 146 def user_prefs_path @user_prefs_path ||= File.join(directory, "user.js") end |