selenium-webdriver 2.53.4 → 3.8.0

Sign up to get free protection for your applications and to get access to all the features.
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