selenium-webdriver 2.53.4 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +363 -10
  3. data/LICENSE +1 -1
  4. data/README.md +2 -3
  5. data/lib/selenium-webdriver.rb +0 -2
  6. data/lib/selenium/server.rb +69 -70
  7. data/lib/selenium/webdriver.rb +32 -23
  8. data/lib/selenium/webdriver/atoms.rb +18 -0
  9. data/lib/selenium/webdriver/atoms/getAttribute.js +8 -0
  10. data/lib/selenium/webdriver/chrome.rb +8 -6
  11. data/lib/selenium/webdriver/chrome/driver.rb +112 -0
  12. data/lib/selenium/webdriver/chrome/options.rb +168 -0
  13. data/lib/selenium/webdriver/chrome/profile.rb +17 -17
  14. data/lib/selenium/webdriver/chrome/service.rb +22 -89
  15. data/lib/selenium/webdriver/common.rb +13 -6
  16. data/lib/selenium/webdriver/common/action_builder.rb +49 -57
  17. data/lib/selenium/webdriver/common/alert.rb +5 -15
  18. data/lib/selenium/webdriver/common/bridge_helper.rb +10 -17
  19. data/lib/selenium/webdriver/common/driver.rb +53 -68
  20. data/lib/selenium/webdriver/common/driver_extensions/{has_input_devices.rb → has_addons.rb} +13 -23
  21. data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +4 -8
  22. data/lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb +4 -7
  23. data/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +0 -4
  24. data/lib/selenium/webdriver/common/driver_extensions/has_session_id.rb +0 -4
  25. data/lib/selenium/webdriver/common/driver_extensions/has_touch_screen.rb +1 -5
  26. data/lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb +0 -5
  27. data/lib/selenium/webdriver/common/driver_extensions/rotatable.rb +4 -9
  28. data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +7 -7
  29. data/lib/selenium/webdriver/common/driver_extensions/uploads_files.rb +2 -7
  30. data/lib/selenium/webdriver/common/element.rb +57 -39
  31. data/lib/selenium/webdriver/common/error.rb +204 -106
  32. data/lib/selenium/webdriver/common/file_reaper.rb +3 -11
  33. data/lib/selenium/webdriver/common/html5/local_storage.rb +6 -10
  34. data/lib/selenium/webdriver/common/html5/session_storage.rb +6 -10
  35. data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +7 -18
  36. data/lib/selenium/webdriver/{safari/options.rb → common/interactions/input_device.rb} +20 -31
  37. data/lib/selenium/webdriver/common/interactions/interaction.rb +50 -0
  38. data/lib/selenium/webdriver/{safari/browser.rb → common/interactions/interactions.rb} +16 -15
  39. data/lib/selenium/webdriver/common/interactions/key_actions.rb +143 -0
  40. data/lib/selenium/webdriver/common/interactions/key_input.rb +62 -0
  41. data/lib/selenium/webdriver/{android.rb → common/interactions/none_input.rb} +11 -6
  42. data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +353 -0
  43. data/lib/selenium/webdriver/common/interactions/pointer_input.rb +132 -0
  44. data/lib/selenium/webdriver/common/keyboard.rb +7 -14
  45. data/lib/selenium/webdriver/common/keys.rb +99 -82
  46. data/lib/selenium/webdriver/common/log_entry.rb +3 -6
  47. data/lib/selenium/webdriver/common/logger.rb +140 -0
  48. data/lib/selenium/webdriver/common/logs.rb +2 -6
  49. data/lib/selenium/webdriver/common/mouse.rb +9 -14
  50. data/lib/selenium/webdriver/common/navigation.rb +2 -6
  51. data/lib/selenium/webdriver/common/options.rb +20 -23
  52. data/lib/selenium/webdriver/common/platform.rb +70 -97
  53. data/lib/selenium/webdriver/common/port_prober.rb +3 -4
  54. data/lib/selenium/webdriver/common/profile_helper.rb +6 -11
  55. data/lib/selenium/webdriver/common/proxy.rb +58 -72
  56. data/lib/selenium/webdriver/common/search_context.rb +22 -29
  57. data/lib/selenium/webdriver/common/service.rb +161 -0
  58. data/lib/selenium/webdriver/common/socket_lock.rb +6 -14
  59. data/lib/selenium/webdriver/common/socket_poller.rb +5 -12
  60. data/lib/selenium/webdriver/common/target_locator.rb +11 -15
  61. data/lib/selenium/webdriver/common/timeouts.rb +4 -8
  62. data/lib/selenium/webdriver/common/touch_action_builder.rb +2 -6
  63. data/lib/selenium/webdriver/common/touch_screen.rb +19 -23
  64. data/lib/selenium/webdriver/common/w3c_action_builder.rb +209 -0
  65. data/lib/selenium/webdriver/{phantomjs.rb → common/w3c_options.rb} +16 -14
  66. data/lib/selenium/webdriver/common/wait.rb +6 -13
  67. data/lib/selenium/webdriver/common/window.rb +48 -17
  68. data/lib/selenium/webdriver/common/zipper.rb +6 -10
  69. data/lib/selenium/webdriver/edge.rb +5 -12
  70. data/lib/selenium/webdriver/edge/bridge.rb +32 -63
  71. data/lib/selenium/webdriver/edge/driver.rb +73 -0
  72. data/lib/selenium/webdriver/edge/service.rb +18 -87
  73. data/lib/selenium/webdriver/firefox.rb +20 -11
  74. data/lib/selenium/webdriver/firefox/binary.rb +40 -56
  75. data/lib/selenium/webdriver/firefox/driver.rb +48 -0
  76. data/lib/selenium/webdriver/firefox/extension.rb +18 -8
  77. data/lib/selenium/webdriver/firefox/extension/prefs.json +3 -11
  78. data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
  79. data/lib/selenium/webdriver/firefox/launcher.rb +13 -22
  80. data/lib/selenium/webdriver/firefox/legacy/driver.rb +79 -0
  81. data/lib/selenium/webdriver/{iphone.rb → firefox/marionette/bridge.rb} +25 -6
  82. data/lib/selenium/webdriver/firefox/marionette/driver.rb +96 -0
  83. data/lib/selenium/webdriver/firefox/options.rb +149 -0
  84. data/lib/selenium/webdriver/firefox/profile.rb +46 -46
  85. data/lib/selenium/webdriver/firefox/profiles_ini.rb +8 -18
  86. data/lib/selenium/webdriver/firefox/service.rb +23 -83
  87. data/lib/selenium/webdriver/firefox/util.rb +0 -4
  88. data/lib/selenium/webdriver/ie.rb +4 -8
  89. data/lib/selenium/webdriver/ie/driver.rb +90 -0
  90. data/lib/selenium/webdriver/ie/options.rb +136 -0
  91. data/lib/selenium/webdriver/ie/service.rb +58 -0
  92. data/lib/selenium/webdriver/remote.rb +8 -16
  93. data/lib/selenium/webdriver/remote/bridge.rb +96 -565
  94. data/lib/selenium/webdriver/remote/capabilities.rb +76 -94
  95. data/lib/selenium/webdriver/remote/driver.rb +49 -0
  96. data/lib/selenium/webdriver/remote/http/common.rb +22 -20
  97. data/lib/selenium/webdriver/remote/http/curb.rb +9 -12
  98. data/lib/selenium/webdriver/remote/http/default.rb +54 -41
  99. data/lib/selenium/webdriver/remote/http/persistent.rb +9 -8
  100. data/lib/selenium/webdriver/remote/oss/bridge.rb +586 -0
  101. data/lib/selenium/webdriver/remote/oss/commands.rb +221 -0
  102. data/lib/selenium/webdriver/remote/response.rb +39 -27
  103. data/lib/selenium/webdriver/remote/server_error.rb +1 -5
  104. data/lib/selenium/webdriver/remote/w3c/bridge.rb +573 -0
  105. data/lib/selenium/webdriver/remote/w3c/capabilities.rb +290 -0
  106. data/lib/selenium/webdriver/remote/w3c/commands.rb +148 -0
  107. data/lib/selenium/webdriver/safari.rb +20 -29
  108. data/lib/selenium/webdriver/{firefox/w3c_bridge.rb → safari/driver.rb} +21 -30
  109. data/lib/selenium/webdriver/safari/service.rb +57 -0
  110. data/lib/selenium/webdriver/support.rb +1 -2
  111. data/lib/selenium/webdriver/support/abstract_event_listener.rb +17 -4
  112. data/lib/selenium/webdriver/support/block_event_listener.rb +1 -5
  113. data/lib/selenium/webdriver/support/color.rb +57 -42
  114. data/lib/selenium/webdriver/support/escaper.rb +41 -0
  115. data/lib/selenium/webdriver/support/event_firing_bridge.rb +36 -40
  116. data/lib/selenium/webdriver/support/select.rb +33 -86
  117. data/selenium-webdriver.gemspec +22 -25
  118. metadata +254 -261
  119. data/lib/selenium-client.rb +0 -21
  120. data/lib/selenium/client.rb +0 -57
  121. data/lib/selenium/client/base.rb +0 -151
  122. data/lib/selenium/client/driver.rb +0 -29
  123. data/lib/selenium/client/errors.rb +0 -28
  124. data/lib/selenium/client/extensions.rb +0 -132
  125. data/lib/selenium/client/idiomatic.rb +0 -507
  126. data/lib/selenium/client/javascript_expression_builder.rb +0 -135
  127. data/lib/selenium/client/javascript_frameworks/jquery.rb +0 -32
  128. data/lib/selenium/client/javascript_frameworks/prototype.rb +0 -32
  129. data/lib/selenium/client/legacy_driver.rb +0 -1722
  130. data/lib/selenium/client/protocol.rb +0 -123
  131. data/lib/selenium/client/selenium_helper.rb +0 -49
  132. data/lib/selenium/rake/server_task.rb +0 -176
  133. data/lib/selenium/webdriver/android/bridge.rb +0 -68
  134. data/lib/selenium/webdriver/chrome/bridge.rb +0 -139
  135. data/lib/selenium/webdriver/common/core_ext/base64.rb +0 -28
  136. data/lib/selenium/webdriver/common/core_ext/dir.rb +0 -61
  137. data/lib/selenium/webdriver/common/html5/location.rb +0 -19
  138. data/lib/selenium/webdriver/common/w3c_error.rb +0 -194
  139. data/lib/selenium/webdriver/edge/legacy_support.rb +0 -117
  140. data/lib/selenium/webdriver/firefox/bridge.rb +0 -89
  141. data/lib/selenium/webdriver/ie/bridge.rb +0 -88
  142. data/lib/selenium/webdriver/ie/server.rb +0 -133
  143. data/lib/selenium/webdriver/iphone/bridge.rb +0 -64
  144. data/lib/selenium/webdriver/phantomjs/bridge.rb +0 -78
  145. data/lib/selenium/webdriver/phantomjs/service.rb +0 -130
  146. data/lib/selenium/webdriver/remote/commands.rb +0 -211
  147. data/lib/selenium/webdriver/remote/w3c_bridge.rb +0 -668
  148. data/lib/selenium/webdriver/remote/w3c_capabilities.rb +0 -236
  149. data/lib/selenium/webdriver/remote/w3c_commands.rb +0 -132
  150. data/lib/selenium/webdriver/safari/bridge.rb +0 -135
  151. data/lib/selenium/webdriver/safari/resources/client.js +0 -7255
  152. data/lib/selenium/webdriver/safari/server.rb +0 -187
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # Licensed to the Software Freedom Conservancy (SFC) under one
4
2
  # or more contributor license agreements. See the NOTICE file
5
3
  # distributed with this work for additional information
@@ -20,36 +18,28 @@
20
18
  module Selenium
21
19
  module WebDriver
22
20
  class Alert
23
-
24
21
  def initialize(bridge)
25
22
  @bridge = bridge
26
23
 
27
24
  # fail fast if the alert doesn't exist
28
- bridge.getAlertText
25
+ bridge.alert_text
29
26
  end
30
27
 
31
28
  def accept
32
- @bridge.acceptAlert
29
+ @bridge.accept_alert
33
30
  end
34
31
 
35
32
  def dismiss
36
- @bridge.dismissAlert
33
+ @bridge.dismiss_alert
37
34
  end
38
35
 
39
36
  def send_keys(keys)
40
- @bridge.setAlertValue keys
37
+ @bridge.alert = keys
41
38
  end
42
39
 
43
40
  def text
44
- @bridge.getAlertText
45
- end
46
-
47
- def authenticate(username, password)
48
- @bridge.setAuthentication username: username, password: password
49
- accept
41
+ @bridge.alert_text
50
42
  end
51
-
52
43
  end # Alert
53
44
  end # WebDriver
54
45
  end # Selenium
55
-
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # Licensed to the Software Freedom Conservancy (SFC) under one
4
2
  # or more contributor license agreements. See the NOTICE file
5
3
  # distributed with this work for additional information
@@ -19,7 +17,6 @@
19
17
 
20
18
  module Selenium
21
19
  module WebDriver
22
-
23
20
  #
24
21
  # Shared across bridges
25
22
  #
@@ -27,24 +24,21 @@ module Selenium
27
24
  #
28
25
 
29
26
  module BridgeHelper
30
-
31
27
  def unwrap_script_result(arg)
32
28
  case arg
33
29
  when Array
34
30
  arg.map { |e| unwrap_script_result(e) }
35
31
  when Hash
36
- if id = element_id_from(arg)
37
- Element.new self, id
38
- else
39
- arg.each { |k, v| arg[k] = unwrap_script_result(v) }
40
- end
32
+ element_id = element_id_from(arg)
33
+ return Element.new(self, element_id) if element_id
34
+ arg.each { |k, v| arg[k] = unwrap_script_result(v) }
41
35
  else
42
36
  arg
43
37
  end
44
38
  end
45
39
 
46
40
  def element_id_from(id)
47
- id['ELEMENT'] or id['element-6066-11e4-a52e-4f735466cecf']
41
+ id['ELEMENT'] || id['element-6066-11e4-a52e-4f735466cecf']
48
42
  end
49
43
 
50
44
  def parse_cookie_string(str)
@@ -57,22 +51,22 @@ module Selenium
57
51
  'secure' => false
58
52
  }
59
53
 
60
- str.split(";").each do |attribute|
61
- if attribute.include? "="
62
- key, value = attribute.strip.split("=", 2)
54
+ str.split(';').each do |attribute|
55
+ if attribute.include? '='
56
+ key, value = attribute.strip.split('=', 2)
63
57
  if result['name'].empty?
64
58
  result['name'] = key
65
59
  result['value'] = value
66
60
  elsif key == 'domain' && value.strip =~ /^\.(.+)/
67
- result['domain'] = $1
61
+ result['domain'] = Regexp.last_match(1)
68
62
  elsif key && value
69
63
  result[key] = value
70
64
  end
71
- elsif attribute == "secure"
65
+ elsif attribute == 'secure'
72
66
  result['secure'] = true
73
67
  end
74
68
 
75
- unless [nil, "", "0"].include?(result['expires'])
69
+ unless [nil, '', '0'].include?(result['expires'])
76
70
  # firefox stores expiry as number of seconds
77
71
  result['expires'] = Time.at(result['expires'].to_i)
78
72
  end
@@ -80,7 +74,6 @@ module Selenium
80
74
 
81
75
  result
82
76
  end
83
-
84
77
  end # BridgeHelper
85
78
  end # WebDriver
86
79
  end # Selenium
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # Licensed to the Software Freedom Conservancy (SFC) under one
4
2
  # or more contributor license agreements. See the NOTICE file
5
3
  # distributed with this work for additional information
@@ -19,7 +17,6 @@
19
17
 
20
18
  module Selenium
21
19
  module WebDriver
22
-
23
20
  #
24
21
  # The main class through which you control the browser.
25
22
  #
@@ -33,7 +30,6 @@ module Selenium
33
30
  include SearchContext
34
31
 
35
32
  class << self
36
-
37
33
  #
38
34
  # @api private
39
35
  #
@@ -43,42 +39,24 @@ module Selenium
43
39
  #
44
40
 
45
41
  def for(browser, opts = {})
46
- listener = opts.delete(:listener)
47
-
48
- bridge = case browser
49
- when :firefox, :ff, :marionette
50
- if Remote::W3CCapabilities.w3c?(opts)
51
- Firefox::W3CBridge.new(opts)
52
- else
53
- Firefox::Bridge.new(opts)
54
- end
55
- when :remote
56
- if Remote::W3CCapabilities.w3c?(opts)
57
- Remote::W3CBridge.new(opts)
58
- else
59
- Remote::Bridge.new(opts)
60
- end
61
- when :ie, :internet_explorer
62
- IE::Bridge.new(opts)
63
- when :chrome
64
- Chrome::Bridge.new(opts)
65
- when :edge
66
- Edge::Bridge.new(opts)
67
- when :android
68
- Android::Bridge.new(opts)
69
- when :iphone
70
- IPhone::Bridge.new(opts)
71
- when :phantomjs
72
- PhantomJS::Bridge.new(opts)
73
- when :safari
74
- Safari::Bridge.new(opts)
75
- else
76
- raise ArgumentError, "unknown driver: #{browser.inspect}"
77
- end
78
-
79
- bridge = Support::EventFiringBridge.new(bridge, listener) if listener
80
-
81
- new(bridge)
42
+ case browser
43
+ when :chrome
44
+ Chrome::Driver.new(opts)
45
+ when :internet_explorer, :ie
46
+ IE::Driver.new(opts)
47
+ when :safari
48
+ Safari::Driver.new(opts)
49
+ when :phantomjs
50
+ PhantomJS::Driver.new(opts)
51
+ when :firefox, :ff
52
+ Firefox::Driver.new(opts)
53
+ when :edge
54
+ Edge::Driver.new(opts)
55
+ when :remote
56
+ Remote::Driver.new(opts)
57
+ else
58
+ raise ArgumentError, "unknown driver: #{browser.inspect}"
59
+ end
82
60
  end
83
61
  end
84
62
 
@@ -89,17 +67,13 @@ module Selenium
89
67
  # @api private
90
68
  #
91
69
 
92
- def initialize(bridge)
70
+ def initialize(bridge, listener: nil)
93
71
  @bridge = bridge
94
-
95
- # TODO: refactor this away
96
- unless bridge.driver_extensions.empty?
97
- extend(*bridge.driver_extensions)
98
- end
72
+ @bridge = Support::EventFiringBridge.new(bridge, listener) if listener
99
73
  end
100
74
 
101
75
  def inspect
102
- '#<%s:0x%x browser=%s>' % [self.class, hash*2, bridge.browser.inspect]
76
+ format '#<%s:0x%x browser=%s>', self.class, hash * 2, bridge.browser.inspect
103
77
  end
104
78
 
105
79
  #
@@ -126,7 +100,24 @@ module Selenium
126
100
  #
127
101
 
128
102
  def manage
129
- @manage ||= WebDriver::Options.new(bridge)
103
+ bridge.options
104
+ end
105
+
106
+ #
107
+ # @return [ActionBuilder, W3CActionBuilder]
108
+ # @see ActionBuilder, W3CActionBuilder
109
+ #
110
+
111
+ def action
112
+ bridge.action
113
+ end
114
+
115
+ def mouse
116
+ bridge.mouse
117
+ end
118
+
119
+ def keyboard
120
+ bridge.keyboard
130
121
  end
131
122
 
132
123
  #
@@ -144,7 +135,7 @@ module Selenium
144
135
  #
145
136
 
146
137
  def current_url
147
- bridge.getCurrentUrl
138
+ bridge.url
148
139
  end
149
140
 
150
141
  #
@@ -154,7 +145,7 @@ module Selenium
154
145
  #
155
146
 
156
147
  def title
157
- bridge.getTitle
148
+ bridge.title
158
149
  end
159
150
 
160
151
  #
@@ -164,7 +155,7 @@ module Selenium
164
155
  #
165
156
 
166
157
  def page_source
167
- bridge.getPageSource
158
+ bridge.page_source
168
159
  end
169
160
 
170
161
  #
@@ -191,7 +182,7 @@ module Selenium
191
182
  #
192
183
 
193
184
  def window_handles
194
- bridge.getWindowHandles
185
+ bridge.window_handles
195
186
  end
196
187
 
197
188
  #
@@ -201,7 +192,7 @@ module Selenium
201
192
  #
202
193
 
203
194
  def window_handle
204
- bridge.getCurrentWindowHandle
195
+ bridge.window_handle
205
196
  end
206
197
 
207
198
  #
@@ -209,7 +200,7 @@ module Selenium
209
200
  #
210
201
  # @param [String] script
211
202
  # JavaScript source to execute
212
- # @param [WebDriver::Element,Integer, Float, Boolean, NilClass, String, Array] *args
203
+ # @param [WebDriver::Element, Integer, Float, Boolean, NilClass, String, Array] args
213
204
  # Arguments will be available in the given script in the 'arguments' pseudo-array.
214
205
  #
215
206
  # @return [WebDriver::Element,Integer,Float,Boolean,NilClass,String,Array]
@@ -217,7 +208,7 @@ module Selenium
217
208
  #
218
209
 
219
210
  def execute_script(script, *args)
220
- bridge.executeScript(script, *args)
211
+ bridge.execute_script(script, *args)
221
212
  end
222
213
 
223
214
  # Execute an asynchronous piece of JavaScript in the context of the
@@ -229,27 +220,26 @@ module Selenium
229
220
  #
230
221
  # @param [String] script
231
222
  # JavaScript source to execute
232
- # @param [WebDriver::Element,Integer, Float, Boolean, NilClass, String, Array] *args
223
+ # @param [WebDriver::Element,Integer, Float, Boolean, NilClass, String, Array] args
233
224
  # Arguments to the script. May be empty.
234
225
  #
235
226
  # @return [WebDriver::Element,Integer,Float,Boolean,NilClass,String,Array]
236
227
  #
237
228
 
238
229
  def execute_async_script(script, *args)
239
- bridge.executeAsyncScript(script, *args)
230
+ bridge.execute_async_script(script, *args)
240
231
  end
241
232
 
242
-
243
233
  #-------------------------------- sugar --------------------------------
244
234
 
245
235
  #
246
- # driver.first(:id, 'foo')
236
+ # driver.first(id: 'foo')
247
237
  #
248
238
 
249
239
  alias_method :first, :find_element
250
240
 
251
241
  #
252
- # driver.all(:class, 'bar') #=> [#<WebDriver::Element:0x1011c3b88, ...]
242
+ # driver.all(class: 'bar') #=> [#<WebDriver::Element:0x1011c3b88, ...]
253
243
  #
254
244
 
255
245
  alias_method :all, :find_elements
@@ -263,7 +253,7 @@ module Selenium
263
253
  # Get the first element matching the given selector. If given a
264
254
  # String or Symbol, it will be used as the id of the element.
265
255
  #
266
- # @param [String,Hash] id or selector
256
+ # @param [String,Hash] sel id or selector
267
257
  # @return [WebDriver::Element]
268
258
  #
269
259
  # Examples:
@@ -273,9 +263,7 @@ module Selenium
273
263
  #
274
264
 
275
265
  def [](sel)
276
- if sel.kind_of?(String) || sel.kind_of?(Symbol)
277
- sel = { :id => sel }
278
- end
266
+ sel = {id: sel} if sel.is_a?(String) || sel.is_a?(Symbol)
279
267
 
280
268
  find_element sel
281
269
  end
@@ -299,10 +287,7 @@ module Selenium
299
287
 
300
288
  private
301
289
 
302
- def bridge
303
- @bridge
304
- end
305
-
290
+ attr_reader :bridge
306
291
  end # Driver
307
292
  end # WebDriver
308
293
  end # Selenium
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # Licensed to the Software Freedom Conservancy (SFC) under one
4
2
  # or more contributor license agreements. See the NOTICE file
5
3
  # distributed with this work for additional information
@@ -19,40 +17,32 @@
19
17
 
20
18
  module Selenium
21
19
  module WebDriver
22
-
23
- #
24
- # @api private
25
- #
26
-
27
20
  module DriverExtensions
28
- module HasInputDevices
21
+ module HasAddons
29
22
 
30
23
  #
31
- # @return [ActionBuilder]
32
- # @api public
33
- #
34
-
35
- def action
36
- ActionBuilder.new mouse, keyboard
37
- end
38
-
24
+ # Installs addon.
39
25
  #
40
- # @api private
26
+ # @param [String] path Full path to addon file
27
+ # @param [Boolean] temporary
28
+ # @return [String] identifier of installed addon
41
29
  #
42
30
 
43
- def mouse
44
- Mouse.new @bridge
31
+ def install_addon(path, temporary = nil)
32
+ @bridge.install_addon(path, temporary)
45
33
  end
46
34
 
47
35
  #
48
- # @api private
36
+ # Uninstalls addon.
37
+ #
38
+ # @param [String] id Identifier of installed addon
49
39
  #
50
40
 
51
- def keyboard
52
- Keyboard.new @bridge
41
+ def uninstall_addon(id)
42
+ @bridge.uninstall_addon(id)
53
43
  end
54
44
 
55
- end # HasInputDevices
45
+ end # HasAddons
56
46
  end # DriverExtensions
57
47
  end # WebDriver
58
48
  end # Selenium
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # Licensed to the Software Freedom Conservancy (SFC) under one
4
2
  # or more contributor license agreements. See the NOTICE file
5
3
  # distributed with this work for additional information
@@ -20,25 +18,23 @@
20
18
  module Selenium
21
19
  module WebDriver
22
20
  module DriverExtensions
23
-
24
21
  module HasLocation
25
22
  def location
26
- @bridge.getLocation
23
+ @bridge.location
27
24
  end
28
25
 
29
26
  def location=(loc)
30
- unless loc.kind_of?(Location)
27
+ unless loc.is_a?(Location)
31
28
  raise TypeError, "expected #{Location}, got #{loc.inspect}:#{loc.class}"
32
29
  end
33
30
 
34
- @bridge.setLocation loc.latitude, loc.longitude, loc.altitude
31
+ @bridge.set_location loc.latitude, loc.longitude, loc.altitude
35
32
  end
36
33
 
37
34
  def set_location(lat, lon, alt)
38
35
  self.location = Location.new(Float(lat), Float(lon), Float(alt))
39
36
  end
40
-
41
- end #HasLocation
37
+ end # HasLocation
42
38
  end # DriverExtensions
43
39
  end # WebDriver
44
40
  end # Selenium