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
@@ -21,118 +19,144 @@ module Selenium
21
19
  module WebDriver
22
20
  module Error
23
21
 
22
+ #
23
+ # Returns exception from code (Integer - OSS, String - W3C).
24
+ # @param [Integer, String, nil] code
25
+ #
26
+
27
+ def self.for_code(code)
28
+ case code
29
+ when nil, 0
30
+ nil
31
+ when Integer
32
+ ERRORS.fetch(code)
33
+ when String
34
+ klass_name = code.split(' ').map(&:capitalize).join.sub(/Error$/, '')
35
+ const_get("#{klass_name}Error")
36
+ end
37
+ rescue NameError
38
+ WebDriverError
39
+ end
40
+
24
41
  class WebDriverError < StandardError; end
25
- class UnsupportedOperationError < WebDriverError; end
26
42
 
27
- class IndexOutOfBoundsError < WebDriverError; end # 1
28
- class NoCollectionError < WebDriverError; end # 2
29
- class NoStringError < WebDriverError; end # 3
30
- class NoStringLengthError < WebDriverError; end # 4
31
- class NoStringWrapperError < WebDriverError; end # 5
32
- class NoSuchDriverError < WebDriverError; end # 6
43
+ class IndexOutOfBoundsError < WebDriverError; end # 1
44
+ class NoCollectionError < WebDriverError; end # 2
45
+ class NoStringError < WebDriverError; end # 3
46
+ class NoStringLengthError < WebDriverError; end # 4
47
+ class NoStringWrapperError < WebDriverError; end # 5
48
+ class NoSuchDriverError < WebDriverError; end # 6
33
49
 
34
50
  #
35
- # An element could not be located on the page using the given search
36
- # parameters.
51
+ # An element could not be located on the page using the given search parameters.
37
52
  #
38
53
 
39
- class NoSuchElementError < WebDriverError; end # 7
54
+ class NoSuchElementError < WebDriverError; end # 7
40
55
 
41
56
  #
42
- # A request to switch to a frame could not be satisfied because the
43
- # frame could not be found.
57
+ # A command to switch to a frame could not be satisfied because the frame could not be found.
44
58
  #
45
59
 
46
- class NoSuchFrameError < WebDriverError; end # 8
47
- class UnknownCommandError < WebDriverError; end # 9
60
+ class NoSuchFrameError < WebDriverError; end # 8
48
61
 
62
+ #
63
+ # A command could not be executed because the remote end is not aware of it.
64
+ #
65
+
66
+ class UnknownCommandError < WebDriverError; end # 9
49
67
 
50
68
  #
51
- # Indicates that a reference to an element is now "stale" - the element
52
- # no longer appears in the DOM of the page.
69
+ # A command failed because the referenced element is no longer attached to the DOM.
53
70
  #
54
71
 
55
- class StaleElementReferenceError < WebDriverError; end # 10
72
+ class StaleElementReferenceError < WebDriverError; end # 10
56
73
 
57
74
  #
58
- # Raised to indicate that although an element is present on the DOM,
59
- # it is not visible, and so is not able to be interacted with.
75
+ # Raised to indicate that although an element is present on the DOM, it is not visible, and
76
+ # so is not able to be interacted with.
60
77
  #
61
78
 
62
- class ElementNotVisibleError < WebDriverError; end # 11
79
+ class ElementNotVisibleError < WebDriverError; end # 11
63
80
 
64
81
  #
65
- # Raised when an interaction could not be performed because the element
66
- # is in an invalid state (e.g. attempting to click a disabled element).
82
+ # The target element is in an invalid state, rendering it impossible to interact with, for
83
+ # example if you click a disabled element.
67
84
  #
68
85
 
69
- class InvalidElementStateError < WebDriverError; end # 12
86
+ class InvalidElementStateError < WebDriverError; end # 12
70
87
 
71
88
  #
72
- # An unknown server-side error occurred while processing the command.
89
+ # An unknown error occurred in the remote end while processing the command.
73
90
  #
74
91
 
75
- class UnknownError < WebDriverError; end # 13
76
- class ExpectedError < WebDriverError; end # 14
92
+ class UnknownError < WebDriverError; end # 13
93
+ class ExpectedError < WebDriverError; end # 14
77
94
 
78
95
  #
79
96
  # An attempt was made to select an element that cannot be selected.
80
97
  #
81
98
 
82
- class ElementNotSelectableError < WebDriverError; end # 15
83
- class NoSuchDocumentError < WebDriverError; end # 16
99
+ class ElementNotSelectableError < WebDriverError; end # 15
100
+ class NoSuchDocumentError < WebDriverError; end # 16
84
101
 
85
102
  #
86
- # An error occurred while executing user supplied JavaScript.
103
+ # An error occurred while executing JavaScript supplied by the user.
87
104
  #
88
105
 
89
- class JavascriptError < WebDriverError; end # 17
90
- class NoScriptResultError < WebDriverError; end # 18
106
+ class JavascriptError < WebDriverError; end # 17
107
+ class NoScriptResultError < WebDriverError; end # 18
91
108
 
92
109
  #
93
110
  # An error occurred while searching for an element by XPath.
94
111
  #
95
112
 
96
- class XPathLookupError < WebDriverError; end # 19
97
- class NoSuchCollectionError < WebDriverError; end # 20
113
+ class XPathLookupError < WebDriverError; end # 19
114
+ class NoSuchCollectionError < WebDriverError; end # 20
98
115
 
99
116
  #
100
- # Raised when a command does not complete in enough time.
117
+ # An operation did not complete before its timeout expired.
101
118
  #
102
119
 
103
- class TimeOutError < WebDriverError; end # 21
104
- class NullPointerError < WebDriverError; end # 22
105
- class NoSuchWindowError < WebDriverError; end # 23
120
+ class TimeOutError < WebDriverError; end # 21
121
+
122
+ class NullPointerError < WebDriverError; end # 22
123
+ class NoSuchWindowError < WebDriverError; end # 23
106
124
 
107
125
  #
108
- # Raised when attempting to add a cookie under a different domain than
109
- # the current URL.
126
+ # An illegal attempt was made to set a cookie under a different domain than the current page.
110
127
  #
111
128
 
112
- class InvalidCookieDomainError < WebDriverError; end # 24
129
+ class InvalidCookieDomainError < WebDriverError; end # 24
113
130
 
114
131
  #
115
- # Raised when a driver fails to set a cookie.
132
+ # A command to set a cookie's value could not be satisfied.
116
133
  #
117
134
 
118
- class UnableToSetCookieError < WebDriverError; end # 25
135
+ class UnableToSetCookieError < WebDriverError; end # 25
119
136
 
120
137
  #
121
138
  # Raised when an alert dialog is present that has not been dealt with.
122
139
  #
123
- class UnhandledAlertError < WebDriverError; end # 26
140
+ class UnhandledAlertError < WebDriverError; end # 26
124
141
 
125
142
  #
126
- # Indicates that a user has tried to access an alert when one is not present.
143
+ # An attempt was made to operate on a modal dialog when one was not open:
144
+ #
145
+ # * W3C dialect is NoSuchAlertError
146
+ # * OSS dialect is NoAlertPresentError
147
+ #
148
+ # We want to allow clients to rescue NoSuchAlertError as a superclass for
149
+ # dialect-agnostic implementation, so NoAlertPresentError should inherit from it.
127
150
  #
128
151
 
129
- class NoAlertPresentError < WebDriverError; end # 27
152
+ class NoSuchAlertError < WebDriverError; end
153
+ class NoAlertPresentError < NoSuchAlertError; end # 27
130
154
 
131
155
  #
132
156
  # A script did not complete before its timeout expired.
133
157
  #
134
158
 
135
- class ScriptTimeOutError < WebDriverError; end # 28
159
+ class ScriptTimeOutError < WebDriverError; end # 28
136
160
 
137
161
  #
138
162
  # The coordinates provided to an interactions operation are invalid.
@@ -141,12 +165,11 @@ module Selenium
141
165
  class InvalidElementCoordinatesError < WebDriverError; end # 29
142
166
 
143
167
  #
144
- # Indicates that IME support is not available. This exception is rasied
145
- # for every IME-related method call if IME support is not available on
146
- # the machine.
168
+ # Indicates that IME support is not available. This exception is rasied for every IME-related
169
+ # method call if IME support is not available on the machine.
147
170
  #
148
171
 
149
- class IMENotAvailableError < WebDriverError; end # 30
172
+ class IMENotAvailableError < WebDriverError; end # 30
150
173
 
151
174
  #
152
175
  # Indicates that activating an IME engine has failed.
@@ -155,73 +178,148 @@ module Selenium
155
178
  class IMEEngineActivationFailedError < WebDriverError; end # 31
156
179
 
157
180
  #
158
- # Argument was an invalid selector (e.g. XPath/CSS).
181
+ # Argument was an invalid selector.
159
182
  #
160
183
 
161
- class InvalidSelectorError < WebDriverError; end # 32
184
+ class InvalidSelectorError < WebDriverError; end # 32
162
185
 
163
186
  #
164
187
  # A new session could not be created.
165
188
  #
166
189
 
167
- class SessionNotCreatedError < WebDriverError; end # 33
190
+ class SessionNotCreatedError < WebDriverError; end # 33
191
+
192
+ #
193
+ # The target for mouse interaction is not in the browser's viewport and cannot be brought
194
+ # into that viewport.
195
+ #
196
+
197
+ class MoveTargetOutOfBoundsError < WebDriverError; end # 34
198
+
199
+ #
200
+ # Indicates that the XPath selector is invalid
201
+ #
202
+
203
+ class InvalidXpathSelectorError < WebDriverError; end
204
+ class InvalidXpathSelectorReturnTyperError < WebDriverError; end
205
+
206
+ #
207
+ # A command could not be completed because the element is not pointer or keyboard
208
+ # interactable.
209
+ #
210
+
211
+ class ElementNotInteractableError < WebDriverError; end
212
+
213
+ #
214
+ # The arguments passed to a command are either invalid or malformed.
215
+ #
216
+
217
+ class InvalidArgumentError < WebDriverError; end
218
+
219
+ #
220
+ # No cookie matching the given path name was found amongst the associated cookies of the
221
+ # current browsing context's active document.
222
+ #
223
+
224
+ class NoSuchCookieError < WebDriverError; end
225
+
226
+ #
227
+ # A screen capture was made impossible.
228
+ #
229
+
230
+ class UnableToCaptureScreenError < WebDriverError; end
231
+
232
+ #
233
+ # Occurs if the given session id is not in the list of active sessions, meaning the session
234
+ # either does not exist or that it's not active.
235
+ #
236
+
237
+ class InvalidSessionIdError < WebDriverError; end
238
+
239
+ #
240
+ # A modal dialog was open, blocking this operation.
241
+ #
242
+
243
+ class UnexpectedAlertOpenError < WebDriverError; end
168
244
 
169
245
  #
170
- # Indicates that the target provided to the actions #move method is
171
- # invalid, e.g. outside of the bounds of the window.
246
+ # The requested command matched a known URL but did not match an method for that URL.
172
247
  #
173
248
 
174
- class MoveTargetOutOfBoundsError < WebDriverError; end # 34
249
+ class UnknownMethodError < WebDriverError; end
175
250
 
251
+ #
252
+ # The Element Click command could not be completed because the element receiving the events
253
+ # is obscuring the element that was requested clicked.
254
+ #
255
+
256
+ class ElementClickInterceptedError < WebDriverError; end
257
+
258
+ #
259
+ # Indicates that a command that should have executed properly cannot be supported for some
260
+ # reason.
261
+ #
262
+
263
+ class UnsupportedOperationError < WebDriverError; end
264
+
265
+ # Aliases for OSS dialect.
266
+ ScriptTimeoutError = ScriptTimeOutError
267
+ NoAlertOpenError = NoAlertPresentError
268
+
269
+ # Aliases for backwards compatibility.
270
+ ObsoleteElementError = StaleElementReferenceError
271
+ UnhandledError = UnknownError
272
+ UnexpectedJavascriptError = JavascriptError
273
+ ElementNotDisplayedError = ElementNotVisibleError
274
+
275
+ #
176
276
  # @api private
177
- Errors = [
178
- IndexOutOfBoundsError, # 1
179
- NoCollectionError, # 2
180
- NoStringError, # 3
181
- NoStringLengthError, # 4
182
- NoStringWrapperError, # 5
183
- NoSuchDriverError, # 6
184
- NoSuchElementError, # 7
185
- NoSuchFrameError, # 8
186
- UnknownCommandError, # 9
187
- StaleElementReferenceError, # 10
188
- ElementNotVisibleError, # 11
189
- InvalidElementStateError, # 12
190
- UnknownError, # 13
191
- ExpectedError, # 14
192
- ElementNotSelectableError, # 15
193
- NoSuchDocumentError, # 16
194
- JavascriptError, # 17
195
- NoScriptResultError, # 18
196
- XPathLookupError, # 19
197
- NoSuchCollectionError, # 20
198
- TimeOutError, # 21
199
- NullPointerError, # 22
200
- NoSuchWindowError, # 23
201
- InvalidCookieDomainError, # 24
202
- UnableToSetCookieError, # 25
203
- UnhandledAlertError, # 26
204
- NoAlertPresentError, # 27
205
- ScriptTimeOutError, # 28
206
- InvalidElementCoordinatesError, # 29
207
- IMENotAvailableError, # 30
208
- IMEEngineActivationFailedError, # 31
209
- InvalidSelectorError, # 32
210
- SessionNotCreatedError, # 33
211
- MoveTargetOutOfBoundsError # 34
212
- ]
213
-
214
- class << self
215
- def for_code(code)
216
- return if [nil, 0].include? code
217
- return Errors[code - 1] if code.is_a? Fixnum
218
-
219
- klass_name = code.split(' ').map(&:capitalize).join
220
- Error.const_get("#{klass_name.gsub('Error','')}Error")
221
- rescue NameError
222
- WebDriverError
223
- end
224
- end
277
+ #
278
+
279
+ ERRORS = {
280
+ 1 => IndexOutOfBoundsError,
281
+ 2 => NoCollectionError,
282
+ 3 => NoStringError,
283
+ 4 => NoStringLengthError,
284
+ 5 => NoStringWrapperError,
285
+ 6 => NoSuchDriverError,
286
+ 7 => NoSuchElementError,
287
+ 8 => NoSuchFrameError,
288
+ 9 => UnknownCommandError,
289
+ 10 => StaleElementReferenceError,
290
+ 11 => ElementNotVisibleError,
291
+ 12 => InvalidElementStateError,
292
+ 13 => UnknownError,
293
+ 14 => ExpectedError,
294
+ 15 => ElementNotSelectableError,
295
+ 16 => NoSuchDocumentError,
296
+ 17 => JavascriptError,
297
+ 18 => NoScriptResultError,
298
+ 19 => XPathLookupError,
299
+ 20 => NoSuchCollectionError,
300
+ 21 => TimeOutError,
301
+ 22 => NullPointerError,
302
+ 23 => NoSuchWindowError,
303
+ 24 => InvalidCookieDomainError,
304
+ 25 => UnableToSetCookieError,
305
+ 26 => UnhandledAlertError,
306
+ 27 => NoAlertPresentError,
307
+ 28 => ScriptTimeOutError,
308
+ 29 => InvalidElementCoordinatesError,
309
+ 30 => IMENotAvailableError,
310
+ 31 => IMEEngineActivationFailedError,
311
+ 32 => InvalidSelectorError,
312
+ 33 => SessionNotCreatedError,
313
+ 34 => MoveTargetOutOfBoundsError,
314
+ # The following are W3C-specific errors,
315
+ # they don't really need error codes, we just make them up!
316
+ 51 => InvalidXpathSelectorError,
317
+ 52 => InvalidXpathSelectorReturnTyperError,
318
+ 60 => ElementNotInteractableError,
319
+ 61 => InvalidArgumentError,
320
+ 62 => NoSuchCookieError,
321
+ 63 => UnableToCaptureScreenError
322
+ }.freeze
225
323
 
226
324
  end # Error
227
325
  end # WebDriver
@@ -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,21 +17,16 @@
19
17
 
20
18
  module Selenium
21
19
  module WebDriver
22
-
23
20
  #
24
21
  # @api private
25
22
  #
26
23
 
27
24
  module FileReaper
28
-
29
25
  class << self
30
- def reap=(bool)
31
- @reap = bool
32
- end
26
+ attr_writer :reap
33
27
 
34
28
  def reap?
35
- @reap = true unless defined?(@reap)
36
- !!@reap
29
+ @reap = defined?(@reap) ? @reap : true
37
30
  end
38
31
 
39
32
  def tmp_files
@@ -67,7 +60,6 @@ module Selenium
67
60
 
68
61
  # we *do* want child process reaping, so not using Platform.exit_hook here.
69
62
  at_exit { reap! }
70
-
71
63
  end # FileReaper
72
64
  end # WebDriver
73
- end # Selenium
65
+ end # Selenium