Class: Selenium::WebDriver::Firefox::Profile
- Inherits:
-
Object
- Object
- Selenium::WebDriver::Firefox::Profile
- Defined in:
- lib/selenium/webdriver/firefox/profile.rb
Constant Summary collapse
- WEBDRIVER_EXTENSION_PATH =
File.("#{WebDriver.root}/selenium/webdriver/firefox/extension/webdriver.xpi")
- WEBDRIVER_PREFS =
{ :native_events => 'webdriver_enable_native_events', :untrusted_certs => 'webdriver_accept_untrusted_certs', :untrusted_issuer => 'webdriver_assume_untrusted_issuer', :port => 'webdriver_firefox_port', :log_file => 'webdriver.log.file' }
Instance Attribute Summary collapse
-
#load_no_focus_lib ⇒ Object
writeonly
Sets the attribute load_no_focus_lib.
-
#log_file ⇒ Object
Returns the value of attribute log_file.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#native_events ⇒ Object
writeonly
Sets the attribute native_events.
-
#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.
-
#add_extension(path, name = extension_name_for(path)) ⇒ Object
Add the extension (directory, .zip or .xpi) at the given path to the profile.
- #add_webdriver_extension ⇒ Object
- #as_json(opts = nil) ⇒ Object
- #assume_untrusted_certificate_issuer=(bool) ⇒ Object
- #assume_untrusted_certificate_issuer? ⇒ Boolean
-
#initialize(model = nil) ⇒ Profile
constructor
Create a new Profile instance.
- #layout_on_disk ⇒ Object
- #load_no_focus_lib? ⇒ Boolean
- #native_events? ⇒ Boolean
- #port=(port) ⇒ Object
- #proxy=(proxy) ⇒ Object
- #secure_ssl? ⇒ Boolean
- #to_json(*args) ⇒ Object
Constructor Details
#initialize(model = nil) ⇒ Profile
Create a new Profile instance
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 40 def initialize(model = nil) @model = verify_model(model) model_prefs = read_model_prefs if model_prefs.empty? @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 = {} else # TODO: clean this up @native_events = model_prefs.delete(WEBDRIVER_PREFS[:native_events]) == "true" @secure_ssl = model_prefs.delete(WEBDRIVER_PREFS[:untrusted_certs]) != "true" @untrusted_issuer = model_prefs.delete(WEBDRIVER_PREFS[:untrusted_issuer]) == "true" @load_no_focus_lib = model_prefs.delete(WEBDRIVER_PREFS[:load_no_focus_lib]) == "true" # not stored in profile atm, so will always be false. @additional_prefs = model_prefs end @extensions = {} end |
Instance Attribute Details
#load_no_focus_lib=(value) ⇒ Object (writeonly)
Sets the attribute load_no_focus_lib
16 17 18 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 16 def load_no_focus_lib=(value) @load_no_focus_lib = value end |
#log_file ⇒ Object
Returns the value of attribute log_file.
15 16 17 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 15 def log_file @log_file end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
15 16 17 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 15 def name @name end |
#native_events=(value) ⇒ Object (writeonly)
Sets the attribute native_events
16 17 18 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 16 def native_events=(value) @native_events = value end |
#secure_ssl=(value) ⇒ Object (writeonly)
Sets the attribute secure_ssl
16 17 18 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 16 def secure_ssl=(value) @secure_ssl = value end |
Class Method Details
.from_json(json) ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 85 def self.from_json(json) data = JSON.parse(json).fetch('zip') # can't use Tempfile here since it doesn't support File::BINARY mode on 1.8 # can't use Dir.mktmpdir(&blk) because of http://jira.codehaus.org/browse/JRUBY-4082 tmp_dir = Dir.mktmpdir begin zip_path = File.join(tmp_dir, "webdriver-profile-duplicate-#{json.hash}") File.open(zip_path, "wb") { |zip_file| zip_file << Base64.decode64(data) } new Zipper.unzip(zip_path) ensure FileUtils.rm_rf tmp_dir end end |
.from_name(name) ⇒ Object
23 24 25 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 23 def from_name(name) ini[name] end |
.ini ⇒ Object
19 20 21 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 19 def ini @ini ||= ProfilesIni.new end |
Instance Method Details
#[]=(key, value) ⇒ Object
Set a preference for this particular profile.
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 106 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 |
#add_extension(path, name = extension_name_for(path)) ⇒ Object
Add the extension (directory, .zip or .xpi) at the given path to the profile.
142 143 144 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 142 def add_extension(path, name = extension_name_for(path)) @extensions[name] = Extension.new(path) end |
#add_webdriver_extension ⇒ Object
132 133 134 135 136 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 132 def add_webdriver_extension unless @extensions.has_key?(:webdriver) add_extension(WEBDRIVER_EXTENSION_PATH, :webdriver) end end |
#as_json(opts = nil) ⇒ Object
77 78 79 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 77 def as_json(opts = nil) {'zip' => Zipper.zip(layout_on_disk)} end |
#assume_untrusted_certificate_issuer=(bool) ⇒ Object
162 163 164 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 162 def assume_untrusted_certificate_issuer=(bool) @untrusted_issuer = bool end |
#assume_untrusted_certificate_issuer? ⇒ Boolean
158 159 160 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 158 def assume_untrusted_certificate_issuer? @untrusted_issuer == true end |
#layout_on_disk ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 65 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? ⇒ Boolean
150 151 152 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 150 def load_no_focus_lib? @load_no_focus_lib == true end |
#native_events? ⇒ Boolean
146 147 148 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 146 def native_events? @native_events == true end |
#port=(port) ⇒ Object
123 124 125 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 123 def port=(port) self[WEBDRIVER_PREFS[:port]] = port end |
#proxy=(proxy) ⇒ Object
166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 166 def proxy=(proxy) unless proxy.kind_of? Proxy raise TypeError, "expected #{Proxy.name}, got #{proxy.inspect}:#{proxy.class}" end case proxy.type when :manual self['network.proxy.type'] = 1 set_manual_proxy_preference "ftp", proxy.ftp set_manual_proxy_preference "http", proxy.http set_manual_proxy_preference "ssl", proxy.ssl if proxy.no_proxy self["network.proxy.no_proxies_on"] = proxy.no_proxy else self["network.proxy.no_proxies_on"] = "" end 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 proxy end |
#secure_ssl? ⇒ Boolean
154 155 156 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 154 def secure_ssl? @secure_ssl == true end |
#to_json(*args) ⇒ Object
81 82 83 |
# File 'lib/selenium/webdriver/firefox/profile.rb', line 81 def to_json(*args) as_json.to_json(*args) end |