browserstack-webdriver 0.0.1
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.
- checksums.yaml +7 -0
- data/CHANGES +791 -0
- data/README.md +31 -0
- data/build.desc +334 -0
- data/lib/selenium-client.rb +2 -0
- data/lib/selenium-webdriver.rb +1 -0
- data/lib/selenium/client.rb +37 -0
- data/lib/selenium/client/base.rb +132 -0
- data/lib/selenium/client/driver.rb +10 -0
- data/lib/selenium/client/errors.rb +9 -0
- data/lib/selenium/client/extensions.rb +118 -0
- data/lib/selenium/client/idiomatic.rb +488 -0
- data/lib/selenium/client/javascript_expression_builder.rb +116 -0
- data/lib/selenium/client/javascript_frameworks/jquery.rb +13 -0
- data/lib/selenium/client/javascript_frameworks/prototype.rb +13 -0
- data/lib/selenium/client/legacy_driver.rb +1720 -0
- data/lib/selenium/client/protocol.rb +104 -0
- data/lib/selenium/client/selenium_helper.rb +34 -0
- data/lib/selenium/rake/server_task.rb +157 -0
- data/lib/selenium/server.rb +248 -0
- data/lib/selenium/webdriver.rb +71 -0
- data/lib/selenium/webdriver/android.rb +9 -0
- data/lib/selenium/webdriver/android/bridge.rb +47 -0
- data/lib/selenium/webdriver/chrome.rb +26 -0
- data/lib/selenium/webdriver/chrome/bridge.rb +120 -0
- data/lib/selenium/webdriver/chrome/profile.rb +90 -0
- data/lib/selenium/webdriver/chrome/service.rb +75 -0
- data/lib/selenium/webdriver/common.rb +44 -0
- data/lib/selenium/webdriver/common/action_builder.rb +352 -0
- data/lib/selenium/webdriver/common/alert.rb +30 -0
- data/lib/selenium/webdriver/common/bridge_helper.rb +67 -0
- data/lib/selenium/webdriver/common/core_ext/base64.rb +9 -0
- data/lib/selenium/webdriver/common/core_ext/dir.rb +42 -0
- data/lib/selenium/webdriver/common/core_ext/string.rb +5 -0
- data/lib/selenium/webdriver/common/driver.rb +301 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_browser_connection.rb +17 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_input_devices.rb +39 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +25 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +13 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_session_id.rb +22 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_touch_screen.rb +19 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb +22 -0
- data/lib/selenium/webdriver/common/driver_extensions/rotatable.rb +45 -0
- data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +43 -0
- data/lib/selenium/webdriver/common/driver_extensions/uploads_files.rb +46 -0
- data/lib/selenium/webdriver/common/element.rb +293 -0
- data/lib/selenium/webdriver/common/error.rb +207 -0
- data/lib/selenium/webdriver/common/file_reaper.rb +47 -0
- data/lib/selenium/webdriver/common/html5/local_storage.rb +42 -0
- data/lib/selenium/webdriver/common/html5/location.rb +0 -0
- data/lib/selenium/webdriver/common/html5/session_storage.rb +44 -0
- data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +42 -0
- data/lib/selenium/webdriver/common/json_helper.rb +34 -0
- data/lib/selenium/webdriver/common/keyboard.rb +55 -0
- data/lib/selenium/webdriver/common/keys.rb +109 -0
- data/lib/selenium/webdriver/common/log_entry.rb +29 -0
- data/lib/selenium/webdriver/common/logs.rb +23 -0
- data/lib/selenium/webdriver/common/mouse.rb +72 -0
- data/lib/selenium/webdriver/common/navigation.rb +43 -0
- data/lib/selenium/webdriver/common/options.rb +136 -0
- data/lib/selenium/webdriver/common/platform.rb +218 -0
- data/lib/selenium/webdriver/common/port_prober.rb +42 -0
- data/lib/selenium/webdriver/common/profile_helper.rb +67 -0
- data/lib/selenium/webdriver/common/proxy.rb +149 -0
- data/lib/selenium/webdriver/common/search_context.rb +92 -0
- data/lib/selenium/webdriver/common/socket_poller.rb +105 -0
- data/lib/selenium/webdriver/common/target_locator.rb +81 -0
- data/lib/selenium/webdriver/common/timeouts.rb +38 -0
- data/lib/selenium/webdriver/common/touch_action_builder.rb +64 -0
- data/lib/selenium/webdriver/common/touch_screen.rb +105 -0
- data/lib/selenium/webdriver/common/wait.rb +63 -0
- data/lib/selenium/webdriver/common/window.rb +104 -0
- data/lib/selenium/webdriver/common/zipper.rb +82 -0
- data/lib/selenium/webdriver/firefox.rb +37 -0
- data/lib/selenium/webdriver/firefox/binary.rb +158 -0
- data/lib/selenium/webdriver/firefox/bridge.rb +70 -0
- data/lib/selenium/webdriver/firefox/extension.rb +52 -0
- data/lib/selenium/webdriver/firefox/launcher.rb +106 -0
- data/lib/selenium/webdriver/firefox/profile.rb +263 -0
- data/lib/selenium/webdriver/firefox/profiles_ini.rb +62 -0
- data/lib/selenium/webdriver/firefox/socket_lock.rb +61 -0
- data/lib/selenium/webdriver/firefox/util.rb +29 -0
- data/lib/selenium/webdriver/ie.rb +19 -0
- data/lib/selenium/webdriver/ie/bridge.rb +68 -0
- data/lib/selenium/webdriver/ie/server.rb +86 -0
- data/lib/selenium/webdriver/iphone.rb +9 -0
- data/lib/selenium/webdriver/iphone/bridge.rb +45 -0
- data/lib/selenium/webdriver/opera.rb +24 -0
- data/lib/selenium/webdriver/opera/bridge.rb +112 -0
- data/lib/selenium/webdriver/opera/service.rb +49 -0
- data/lib/selenium/webdriver/phantomjs.rb +22 -0
- data/lib/selenium/webdriver/phantomjs/bridge.rb +59 -0
- data/lib/selenium/webdriver/phantomjs/service.rb +90 -0
- data/lib/selenium/webdriver/remote.rb +22 -0
- data/lib/selenium/webdriver/remote/bridge.rb +644 -0
- data/lib/selenium/webdriver/remote/capabilities.rb +267 -0
- data/lib/selenium/webdriver/remote/commands.rb +193 -0
- data/lib/selenium/webdriver/remote/http/common.rb +74 -0
- data/lib/selenium/webdriver/remote/http/curb.rb +79 -0
- data/lib/selenium/webdriver/remote/http/default.rb +139 -0
- data/lib/selenium/webdriver/remote/http/persistent.rb +38 -0
- data/lib/selenium/webdriver/remote/response.rb +97 -0
- data/lib/selenium/webdriver/remote/server_error.rb +17 -0
- data/lib/selenium/webdriver/safari.rb +46 -0
- data/lib/selenium/webdriver/safari/bridge.rb +110 -0
- data/lib/selenium/webdriver/safari/browser.rb +20 -0
- data/lib/selenium/webdriver/safari/extension.rb +120 -0
- data/lib/selenium/webdriver/safari/server.rb +145 -0
- data/lib/selenium/webdriver/support.rb +5 -0
- data/lib/selenium/webdriver/support/abstract_event_listener.rb +28 -0
- data/lib/selenium/webdriver/support/block_event_listener.rb +17 -0
- data/lib/selenium/webdriver/support/color.rb +110 -0
- data/lib/selenium/webdriver/support/event_firing_bridge.rb +112 -0
- data/lib/selenium/webdriver/support/select.rb +293 -0
- data/ruby.iml +13 -0
- data/spec/integration/selenium/client/api/backward_compatible_api_spec.rb +22 -0
- data/spec/integration/selenium/client/api/browser_xpath_library_spec.rb +17 -0
- data/spec/integration/selenium/client/api/click_spec.rb +39 -0
- data/spec/integration/selenium/client/api/cookie_spec.rb +39 -0
- data/spec/integration/selenium/client/api/element_spec.rb +14 -0
- data/spec/integration/selenium/client/api/highlight_located_element_spec.rb +19 -0
- data/spec/integration/selenium/client/api/retrieve_last_remote_control_logs_spec.rb +33 -0
- data/spec/integration/selenium/client/api/screenshot_spec.rb +31 -0
- data/spec/integration/selenium/client/api/select_window_spec.rb +46 -0
- data/spec/integration/selenium/client/api/start_stop_spec.rb +9 -0
- data/spec/integration/selenium/client/api/wait_for_ajax_spec.rb +27 -0
- data/spec/integration/selenium/client/api/wait_for_element_spec.rb +56 -0
- data/spec/integration/selenium/client/api/wait_for_field_value_spec.rb +52 -0
- data/spec/integration/selenium/client/api/wait_for_text_spec.rb +98 -0
- data/spec/integration/selenium/client/api/webdriver_backed_spec.rb +21 -0
- data/spec/integration/selenium/client/sample-app/public/jquery-1.3.2.js +4376 -0
- data/spec/integration/selenium/client/sample-app/public/jquery.html +55 -0
- data/spec/integration/selenium/client/sample-app/public/prototype-1.6.0.3.js +4320 -0
- data/spec/integration/selenium/client/sample-app/public/prototype.html +59 -0
- data/spec/integration/selenium/client/sample-app/sample_app.rb +32 -0
- data/spec/integration/selenium/client/spec_helper.rb +139 -0
- data/spec/integration/selenium/webdriver/app_cache_spec.rb +47 -0
- data/spec/integration/selenium/webdriver/browser_connection_spec.rb +20 -0
- data/spec/integration/selenium/webdriver/chrome/driver_spec.rb +28 -0
- data/spec/integration/selenium/webdriver/chrome/profile_spec.rb +63 -0
- data/spec/integration/selenium/webdriver/driver_spec.rb +266 -0
- data/spec/integration/selenium/webdriver/element_spec.rb +191 -0
- data/spec/integration/selenium/webdriver/error_spec.rb +30 -0
- data/spec/integration/selenium/webdriver/firefox/driver_spec.rb +21 -0
- data/spec/integration/selenium/webdriver/firefox/profile_spec.rb +141 -0
- data/spec/integration/selenium/webdriver/keyboard_spec.rb +57 -0
- data/spec/integration/selenium/webdriver/location_spec.rb +29 -0
- data/spec/integration/selenium/webdriver/mouse_spec.rb +57 -0
- data/spec/integration/selenium/webdriver/navigation_spec.rb +46 -0
- data/spec/integration/selenium/webdriver/opera/driver_spec.rb +47 -0
- data/spec/integration/selenium/webdriver/options_spec.rb +77 -0
- data/spec/integration/selenium/webdriver/remote/driver_spec.rb +19 -0
- data/spec/integration/selenium/webdriver/remote/element_spec.rb +26 -0
- data/spec/integration/selenium/webdriver/spec_helper.rb +36 -0
- data/spec/integration/selenium/webdriver/spec_support.rb +12 -0
- data/spec/integration/selenium/webdriver/spec_support/guards.rb +110 -0
- data/spec/integration/selenium/webdriver/spec_support/helpers.rb +51 -0
- data/spec/integration/selenium/webdriver/spec_support/rack_server.rb +123 -0
- data/spec/integration/selenium/webdriver/spec_support/test_environment.rb +239 -0
- data/spec/integration/selenium/webdriver/sql_database_spec.rb +59 -0
- data/spec/integration/selenium/webdriver/storage_spec.rb +96 -0
- data/spec/integration/selenium/webdriver/target_locator_spec.rb +186 -0
- data/spec/integration/selenium/webdriver/timeout_spec.rb +69 -0
- data/spec/integration/selenium/webdriver/touch_spec.rb +176 -0
- data/spec/integration/selenium/webdriver/window_spec.rb +70 -0
- data/spec/integration/selenium/webdriver/zipper_spec.rb +66 -0
- data/spec/unit/selenium/client/base_spec.rb +239 -0
- data/spec/unit/selenium/client/extensions_spec.rb +174 -0
- data/spec/unit/selenium/client/idiomatic_spec.rb +500 -0
- data/spec/unit/selenium/client/javascript_expression_builder_spec.rb +79 -0
- data/spec/unit/selenium/client/javascript_frameworks/jquery_spec.rb +10 -0
- data/spec/unit/selenium/client/javascript_frameworks/prototype_spec.rb +10 -0
- data/spec/unit/selenium/client/protocol_spec.rb +124 -0
- data/spec/unit/selenium/client/selenium_helper_spec.rb +56 -0
- data/spec/unit/selenium/client/spec_helper.rb +24 -0
- data/spec/unit/selenium/rake/task_spec.rb +79 -0
- data/spec/unit/selenium/server_spec.rb +150 -0
- data/spec/unit/selenium/webdriver/action_builder_spec.rb +97 -0
- data/spec/unit/selenium/webdriver/android/bridge_spec.rb +43 -0
- data/spec/unit/selenium/webdriver/chrome/bridge_spec.rb +137 -0
- data/spec/unit/selenium/webdriver/chrome/profile_spec.rb +57 -0
- data/spec/unit/selenium/webdriver/chrome/service_spec.rb +44 -0
- data/spec/unit/selenium/webdriver/error_spec.rb +41 -0
- data/spec/unit/selenium/webdriver/firefox/bridge_spec.rb +47 -0
- data/spec/unit/selenium/webdriver/ie/bridge_spec.rb +91 -0
- data/spec/unit/selenium/webdriver/iphone/bridge_spec.rb +42 -0
- data/spec/unit/selenium/webdriver/log_entry_spec.rb +11 -0
- data/spec/unit/selenium/webdriver/opera/bridge_spec.rb +44 -0
- data/spec/unit/selenium/webdriver/phantomjs/bridge_spec.rb +55 -0
- data/spec/unit/selenium/webdriver/proxy_spec.rb +106 -0
- data/spec/unit/selenium/webdriver/remote/bridge_spec.rb +16 -0
- data/spec/unit/selenium/webdriver/remote/capabilities_spec.rb +115 -0
- data/spec/unit/selenium/webdriver/remote/http/common_spec.rb +24 -0
- data/spec/unit/selenium/webdriver/remote/http/default_spec.rb +124 -0
- data/spec/unit/selenium/webdriver/search_context_spec.rb +61 -0
- data/spec/unit/selenium/webdriver/socket_poller_spec.rb +68 -0
- data/spec/unit/selenium/webdriver/spec_helper.rb +27 -0
- data/spec/unit/selenium/webdriver/support/color_spec.rb +119 -0
- data/spec/unit/selenium/webdriver/support/event_firing_spec.rb +111 -0
- data/spec/unit/selenium/webdriver/support/select_spec.rb +290 -0
- data/spec/unit/selenium/webdriver/wait_spec.rb +49 -0
- metadata +370 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
module Selenium
|
|
2
|
+
module WebDriver
|
|
3
|
+
module Error
|
|
4
|
+
|
|
5
|
+
class WebDriverError < StandardError; end
|
|
6
|
+
class UnsupportedOperationError < WebDriverError; end
|
|
7
|
+
|
|
8
|
+
class IndexOutOfBoundsError < WebDriverError; end # 1
|
|
9
|
+
class NoCollectionError < WebDriverError; end # 2
|
|
10
|
+
class NoStringError < WebDriverError; end # 3
|
|
11
|
+
class NoStringLengthError < WebDriverError; end # 4
|
|
12
|
+
class NoStringWrapperError < WebDriverError; end # 5
|
|
13
|
+
class NoSuchDriverError < WebDriverError; end # 6
|
|
14
|
+
|
|
15
|
+
#
|
|
16
|
+
# An element could not be located on the page using the given search
|
|
17
|
+
# parameters.
|
|
18
|
+
#
|
|
19
|
+
|
|
20
|
+
class NoSuchElementError < WebDriverError; end # 7
|
|
21
|
+
|
|
22
|
+
#
|
|
23
|
+
# A request to switch to a frame could not be satisfied because the
|
|
24
|
+
# frame could not be found.
|
|
25
|
+
#
|
|
26
|
+
|
|
27
|
+
class NoSuchFrameError < WebDriverError; end # 8
|
|
28
|
+
class UnknownCommandError < WebDriverError; end # 9
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
#
|
|
32
|
+
# Indicates that a reference to an element is now "stale" - the element
|
|
33
|
+
# no longer appears in the DOM of the page.
|
|
34
|
+
#
|
|
35
|
+
|
|
36
|
+
class StaleElementReferenceError < WebDriverError; end # 10
|
|
37
|
+
|
|
38
|
+
#
|
|
39
|
+
# Raised to indicate that although an element is present on the DOM,
|
|
40
|
+
# it is not visible, and so is not able to be interacted with.
|
|
41
|
+
#
|
|
42
|
+
|
|
43
|
+
class ElementNotVisibleError < WebDriverError; end # 11
|
|
44
|
+
|
|
45
|
+
#
|
|
46
|
+
# Raised when an interaction could not be performed because the element
|
|
47
|
+
# is in an invalid state (e.g. attempting to click a disabled element).
|
|
48
|
+
#
|
|
49
|
+
|
|
50
|
+
class InvalidElementStateError < WebDriverError; end # 12
|
|
51
|
+
|
|
52
|
+
#
|
|
53
|
+
# An unknown server-side error occurred while processing the command.
|
|
54
|
+
#
|
|
55
|
+
|
|
56
|
+
class UnknownError < WebDriverError; end # 13
|
|
57
|
+
class ExpectedError < WebDriverError; end # 14
|
|
58
|
+
|
|
59
|
+
#
|
|
60
|
+
# An attempt was made to select an element that cannot be selected.
|
|
61
|
+
#
|
|
62
|
+
|
|
63
|
+
class ElementNotSelectableError < WebDriverError; end # 15
|
|
64
|
+
class NoSuchDocumentError < WebDriverError; end # 16
|
|
65
|
+
|
|
66
|
+
#
|
|
67
|
+
# An error occurred while executing user supplied JavaScript.
|
|
68
|
+
#
|
|
69
|
+
|
|
70
|
+
class JavascriptError < WebDriverError; end # 17
|
|
71
|
+
class NoScriptResultError < WebDriverError; end # 18
|
|
72
|
+
|
|
73
|
+
#
|
|
74
|
+
# An error occurred while searching for an element by XPath.
|
|
75
|
+
#
|
|
76
|
+
|
|
77
|
+
class XPathLookupError < WebDriverError; end # 19
|
|
78
|
+
class NoSuchCollectionError < WebDriverError; end # 20
|
|
79
|
+
|
|
80
|
+
#
|
|
81
|
+
# Raised when a command does not complete in enough time.
|
|
82
|
+
#
|
|
83
|
+
|
|
84
|
+
class TimeOutError < WebDriverError; end # 21
|
|
85
|
+
class NullPointerError < WebDriverError; end # 22
|
|
86
|
+
class NoSuchWindowError < WebDriverError; end # 23
|
|
87
|
+
|
|
88
|
+
#
|
|
89
|
+
# Raised when attempting to add a cookie under a different domain than
|
|
90
|
+
# the current URL.
|
|
91
|
+
#
|
|
92
|
+
|
|
93
|
+
class InvalidCookieDomainError < WebDriverError; end # 24
|
|
94
|
+
|
|
95
|
+
#
|
|
96
|
+
# Raised when a driver fails to set a cookie.
|
|
97
|
+
#
|
|
98
|
+
|
|
99
|
+
class UnableToSetCookieError < WebDriverError; end # 25
|
|
100
|
+
|
|
101
|
+
#
|
|
102
|
+
# Raised when an alert dialog is present that has not been dealt with.
|
|
103
|
+
#
|
|
104
|
+
class UnhandledAlertError < WebDriverError; end # 26
|
|
105
|
+
|
|
106
|
+
#
|
|
107
|
+
# Indicates that a user has tried to access an alert when one is not present.
|
|
108
|
+
#
|
|
109
|
+
|
|
110
|
+
class NoAlertPresentError < WebDriverError; end # 27
|
|
111
|
+
|
|
112
|
+
#
|
|
113
|
+
# A script did not complete before its timeout expired.
|
|
114
|
+
#
|
|
115
|
+
|
|
116
|
+
class ScriptTimeOutError < WebDriverError; end # 28
|
|
117
|
+
|
|
118
|
+
#
|
|
119
|
+
# The coordinates provided to an interactions operation are invalid.
|
|
120
|
+
#
|
|
121
|
+
|
|
122
|
+
class InvalidElementCoordinatesError < WebDriverError; end # 29
|
|
123
|
+
|
|
124
|
+
#
|
|
125
|
+
# Indicates that IME support is not available. This exception is rasied
|
|
126
|
+
# for every IME-related method call if IME support is not available on
|
|
127
|
+
# the machine.
|
|
128
|
+
#
|
|
129
|
+
|
|
130
|
+
class IMENotAvailableError < WebDriverError; end # 30
|
|
131
|
+
|
|
132
|
+
#
|
|
133
|
+
# Indicates that activating an IME engine has failed.
|
|
134
|
+
#
|
|
135
|
+
|
|
136
|
+
class IMEEngineActivationFailedError < WebDriverError; end # 31
|
|
137
|
+
|
|
138
|
+
#
|
|
139
|
+
# Argument was an invalid selector (e.g. XPath/CSS).
|
|
140
|
+
#
|
|
141
|
+
|
|
142
|
+
class InvalidSelectorError < WebDriverError; end # 32
|
|
143
|
+
# 33
|
|
144
|
+
|
|
145
|
+
#
|
|
146
|
+
# Indicates that the target provided to the actions #move method is
|
|
147
|
+
# invalid, e.g. outside of the bounds of the window.
|
|
148
|
+
#
|
|
149
|
+
|
|
150
|
+
class MoveTargetOutOfBoundsError < WebDriverError; end # 34
|
|
151
|
+
|
|
152
|
+
# @api private
|
|
153
|
+
Errors = [
|
|
154
|
+
IndexOutOfBoundsError, # 1
|
|
155
|
+
NoCollectionError, # 2
|
|
156
|
+
NoStringError, # 3
|
|
157
|
+
NoStringLengthError, # 4
|
|
158
|
+
NoStringWrapperError, # 5
|
|
159
|
+
NoSuchDriverError, # 6
|
|
160
|
+
NoSuchElementError, # 7
|
|
161
|
+
NoSuchFrameError, # 8
|
|
162
|
+
UnknownCommandError, # 9
|
|
163
|
+
StaleElementReferenceError, # 10
|
|
164
|
+
ElementNotVisibleError, # 11
|
|
165
|
+
InvalidElementStateError, # 12
|
|
166
|
+
UnknownError, # 13
|
|
167
|
+
ExpectedError, # 14
|
|
168
|
+
ElementNotSelectableError, # 15
|
|
169
|
+
NoSuchDocumentError, # 16
|
|
170
|
+
JavascriptError, # 17
|
|
171
|
+
NoScriptResultError, # 18
|
|
172
|
+
XPathLookupError, # 19
|
|
173
|
+
NoSuchCollectionError, # 20
|
|
174
|
+
TimeOutError, # 21
|
|
175
|
+
NullPointerError, # 22
|
|
176
|
+
NoSuchWindowError, # 23
|
|
177
|
+
InvalidCookieDomainError, # 24
|
|
178
|
+
UnableToSetCookieError, # 25
|
|
179
|
+
UnhandledAlertError, # 26
|
|
180
|
+
NoAlertPresentError, # 27
|
|
181
|
+
ScriptTimeOutError, # 28
|
|
182
|
+
InvalidElementCoordinatesError, # 29
|
|
183
|
+
IMENotAvailableError, # 30
|
|
184
|
+
IMEEngineActivationFailedError, # 31
|
|
185
|
+
InvalidSelectorError, # 32
|
|
186
|
+
nil, # 33
|
|
187
|
+
MoveTargetOutOfBoundsError # 34
|
|
188
|
+
]
|
|
189
|
+
|
|
190
|
+
# aliased for backwards compatibility
|
|
191
|
+
ObsoleteElementError = StaleElementReferenceError
|
|
192
|
+
UnhandledError = UnknownError
|
|
193
|
+
UnexpectedJavascriptError = JavascriptError
|
|
194
|
+
NoAlertOpenError = NoAlertPresentError
|
|
195
|
+
ElementNotDisplayedError = ElementNotVisibleError
|
|
196
|
+
|
|
197
|
+
class << self
|
|
198
|
+
def for_code(code)
|
|
199
|
+
return if [nil, 0].include? code
|
|
200
|
+
|
|
201
|
+
Errors[code - 1] || WebDriverError
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
end # Error
|
|
206
|
+
end # WebDriver
|
|
207
|
+
end # Selenium
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Selenium
|
|
2
|
+
module WebDriver
|
|
3
|
+
|
|
4
|
+
#
|
|
5
|
+
# @api private
|
|
6
|
+
#
|
|
7
|
+
|
|
8
|
+
module FileReaper
|
|
9
|
+
|
|
10
|
+
class << self
|
|
11
|
+
def reap=(bool)
|
|
12
|
+
@reap = bool
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def reap?
|
|
16
|
+
@reap = true unless defined?(@reap)
|
|
17
|
+
!!@reap
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def tmp_files
|
|
21
|
+
@tmp_files ||= []
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def <<(file)
|
|
25
|
+
tmp_files << file
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def reap(file)
|
|
29
|
+
return unless reap?
|
|
30
|
+
|
|
31
|
+
unless tmp_files.include?(file)
|
|
32
|
+
raise Error::WebDriverError, "file not added for reaping: #{file.inspect}"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
FileUtils.rm_rf tmp_files.delete(file)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def reap!
|
|
39
|
+
tmp_files.each { |file| FileUtils.rm_rf(file) } if reap?
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
Platform.exit_hook { reap! }
|
|
44
|
+
|
|
45
|
+
end # FileReaper
|
|
46
|
+
end # WebDriver
|
|
47
|
+
end # Selenium
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module Selenium
|
|
2
|
+
module WebDriver
|
|
3
|
+
module HTML5
|
|
4
|
+
|
|
5
|
+
class LocalStorage
|
|
6
|
+
include SharedWebStorage
|
|
7
|
+
|
|
8
|
+
#
|
|
9
|
+
# @api private
|
|
10
|
+
#
|
|
11
|
+
def initialize(bridge)
|
|
12
|
+
@bridge = bridge
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def [](key)
|
|
16
|
+
@bridge.getLocalStorageItem key
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def []=(key, value)
|
|
20
|
+
@bridge.setLocalStorageItem key, value
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def delete(key)
|
|
24
|
+
@bridge.removeLocalStorageItem key
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def clear
|
|
28
|
+
@bridge.clearLocalStorage
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def size
|
|
32
|
+
@bridge.getLocalStorageSize
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def keys
|
|
36
|
+
@bridge.getLocalStorageKeys.reverse
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Selenium
|
|
2
|
+
module WebDriver
|
|
3
|
+
module HTML5
|
|
4
|
+
|
|
5
|
+
class SessionStorage
|
|
6
|
+
include Enumerable
|
|
7
|
+
include SharedWebStorage
|
|
8
|
+
|
|
9
|
+
def [](key)
|
|
10
|
+
@bridge.getSessionStorageItem key
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def []=(key, value)
|
|
14
|
+
@bridge.setSessionStorageItem key, value
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def delete(key)
|
|
18
|
+
@bridge.removeSessionStorageItem key
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def clear
|
|
22
|
+
@bridge.clearSessionStorage
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def size
|
|
26
|
+
@bridge.getSessionStorageSize
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def keys
|
|
30
|
+
@bridge.getSessionStorageKeys.reverse
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
#
|
|
34
|
+
# @api private
|
|
35
|
+
#
|
|
36
|
+
|
|
37
|
+
def initialize(bridge)
|
|
38
|
+
@bridge = bridge
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module Selenium
|
|
2
|
+
module WebDriver
|
|
3
|
+
module HTML5
|
|
4
|
+
|
|
5
|
+
module SharedWebStorage
|
|
6
|
+
include Enumerable
|
|
7
|
+
|
|
8
|
+
def key?(key)
|
|
9
|
+
keys.include? key
|
|
10
|
+
end
|
|
11
|
+
alias_method :member?, :key?
|
|
12
|
+
alias_method :has_key?, :key?
|
|
13
|
+
|
|
14
|
+
def fetch(key, &blk)
|
|
15
|
+
if self.key? key
|
|
16
|
+
return self[key]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
if block_given?
|
|
20
|
+
yield key
|
|
21
|
+
else
|
|
22
|
+
# should be KeyError, but it's 1.9-specific
|
|
23
|
+
raise IndexError, "missing key #{key.inspect}"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def empty?
|
|
28
|
+
size == 0
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def each(&blk)
|
|
32
|
+
return enum_for(:each) unless block_given?
|
|
33
|
+
|
|
34
|
+
keys.each do |k|
|
|
35
|
+
yield k, self[k]
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Selenium
|
|
2
|
+
module WebDriver
|
|
3
|
+
module JsonHelper
|
|
4
|
+
|
|
5
|
+
# ActiveSupport may define Object#load, so we can't use MultiJson.respond_to? here
|
|
6
|
+
sm = MultiJson.singleton_methods.map { |e| e.to_sym }
|
|
7
|
+
|
|
8
|
+
if sm.include? :load
|
|
9
|
+
# @api private
|
|
10
|
+
def json_load(obj)
|
|
11
|
+
MultiJson.load(obj)
|
|
12
|
+
end
|
|
13
|
+
else
|
|
14
|
+
# @api private
|
|
15
|
+
def json_load(obj)
|
|
16
|
+
MultiJson.decode(obj)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
if sm.include? :dump
|
|
21
|
+
# @api private
|
|
22
|
+
def json_dump(obj)
|
|
23
|
+
MultiJson.dump(obj)
|
|
24
|
+
end
|
|
25
|
+
else
|
|
26
|
+
# @api private
|
|
27
|
+
def json_dump(obj)
|
|
28
|
+
MultiJson.encode(obj)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
module Selenium
|
|
2
|
+
module WebDriver
|
|
3
|
+
|
|
4
|
+
#
|
|
5
|
+
# @api private
|
|
6
|
+
# @see ActionBuilder
|
|
7
|
+
|
|
8
|
+
class Keyboard
|
|
9
|
+
|
|
10
|
+
def initialize(bridge)
|
|
11
|
+
@bridge = bridge
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def send_keys(*keys)
|
|
15
|
+
@bridge.sendKeysToActiveElement Keys.encode(keys)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
#
|
|
19
|
+
# Press a modifier key
|
|
20
|
+
#
|
|
21
|
+
# @see Selenium::WebDriver::Keys
|
|
22
|
+
#
|
|
23
|
+
|
|
24
|
+
def press(key)
|
|
25
|
+
assert_modifier key
|
|
26
|
+
|
|
27
|
+
@bridge.sendKeysToActiveElement Keys.encode([key])
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
#
|
|
31
|
+
# Release a modifier key
|
|
32
|
+
#
|
|
33
|
+
# @see Selenium::WebDriver::Keys
|
|
34
|
+
#
|
|
35
|
+
|
|
36
|
+
def release(key)
|
|
37
|
+
assert_modifier key
|
|
38
|
+
|
|
39
|
+
@bridge.sendKeysToActiveElement Keys.encode([key])
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
private
|
|
43
|
+
|
|
44
|
+
MODIFIERS = [:control, :shift, :alt, :command, :meta]
|
|
45
|
+
|
|
46
|
+
def assert_modifier(key)
|
|
47
|
+
unless MODIFIERS.include? key
|
|
48
|
+
raise ArgumentError,
|
|
49
|
+
"#{key.inspect} is not a modifier key, expected one of #{MODIFIERS.inspect}"
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end # Keyboard
|
|
54
|
+
end # WebDriver
|
|
55
|
+
end # Selenium
|