selenium-webdriver 3.142.7 → 4.0.0.alpha1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES +21 -43
- data/lib/selenium/webdriver.rb +2 -4
- data/lib/selenium/webdriver/chrome/bridge.rb +3 -21
- data/lib/selenium/webdriver/chrome/driver.rb +12 -39
- data/lib/selenium/webdriver/chrome/options.rb +3 -7
- data/lib/selenium/webdriver/chrome/profile.rb +2 -2
- data/lib/selenium/webdriver/chrome/service.rb +4 -9
- data/lib/selenium/webdriver/common.rb +7 -16
- data/lib/selenium/webdriver/common/action_builder.rb +97 -249
- data/lib/selenium/webdriver/common/driver.rb +2 -4
- data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +1 -1
- data/lib/selenium/webdriver/common/element.rb +3 -6
- data/lib/selenium/webdriver/common/error.rb +27 -203
- data/lib/selenium/webdriver/common/interactions/key_actions.rb +5 -5
- data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +13 -13
- data/lib/selenium/webdriver/common/manager.rb +1 -1
- data/lib/selenium/webdriver/common/options.rb +148 -24
- data/lib/selenium/webdriver/common/service.rb +16 -34
- data/lib/selenium/webdriver/common/socket_poller.rb +2 -2
- data/lib/selenium/webdriver/common/w3c_options.rb +45 -0
- data/lib/selenium/webdriver/edge.rb +0 -1
- data/lib/selenium/webdriver/edge/driver.rb +14 -10
- data/lib/selenium/webdriver/edge/service.rb +6 -7
- data/lib/selenium/webdriver/firefox.rb +2 -6
- data/lib/selenium/webdriver/firefox/binary.rb +3 -80
- data/lib/selenium/webdriver/firefox/bridge.rb +47 -0
- data/lib/selenium/webdriver/firefox/driver.rb +44 -22
- data/lib/selenium/webdriver/firefox/marionette/driver.rb +1 -1
- data/lib/selenium/webdriver/firefox/options.rb +2 -2
- data/lib/selenium/webdriver/firefox/profile.rb +25 -14
- data/lib/selenium/webdriver/firefox/service.rb +4 -4
- data/lib/selenium/webdriver/ie/driver.rb +5 -18
- data/lib/selenium/webdriver/ie/options.rb +2 -2
- data/lib/selenium/webdriver/ie/service.rb +4 -4
- data/lib/selenium/webdriver/remote.rb +2 -6
- data/lib/selenium/webdriver/remote/bridge.rb +515 -69
- data/lib/selenium/webdriver/remote/capabilities.rb +77 -99
- data/lib/selenium/webdriver/remote/commands.rb +156 -0
- data/lib/selenium/webdriver/remote/driver.rb +12 -5
- data/lib/selenium/webdriver/remote/http/default.rb +0 -9
- data/lib/selenium/webdriver/remote/response.rb +16 -47
- data/lib/selenium/webdriver/safari.rb +1 -1
- data/lib/selenium/webdriver/safari/bridge.rb +3 -3
- data/lib/selenium/webdriver/safari/driver.rb +4 -1
- data/lib/selenium/webdriver/safari/service.rb +4 -4
- data/lib/selenium/webdriver/support/select.rb +1 -1
- data/lib/selenium/webdriver/version.rb +1 -1
- data/selenium-webdriver.gemspec +3 -3
- metadata +14 -5
@@ -48,8 +48,6 @@ module Selenium
|
|
48
48
|
IE::Driver.new(opts)
|
49
49
|
when :safari
|
50
50
|
Safari::Driver.new(opts)
|
51
|
-
when :phantomjs
|
52
|
-
PhantomJS::Driver.new(opts)
|
53
51
|
when :firefox, :ff
|
54
52
|
Firefox::Driver.new(opts)
|
55
53
|
when :edge
|
@@ -106,8 +104,8 @@ module Selenium
|
|
106
104
|
end
|
107
105
|
|
108
106
|
#
|
109
|
-
# @return [ActionBuilder
|
110
|
-
# @see ActionBuilder
|
107
|
+
# @return [ActionBuilder]
|
108
|
+
# @see ActionBuilder
|
111
109
|
#
|
112
110
|
|
113
111
|
def action
|
@@ -20,6 +20,8 @@
|
|
20
20
|
module Selenium
|
21
21
|
module WebDriver
|
22
22
|
class Element
|
23
|
+
ELEMENT_KEY = 'element-6066-11e4-a52e-4f735466cecf'
|
24
|
+
|
23
25
|
include SearchContext
|
24
26
|
|
25
27
|
#
|
@@ -312,12 +314,7 @@ module Selenium
|
|
312
314
|
#
|
313
315
|
|
314
316
|
def as_json(*)
|
315
|
-
|
316
|
-
'element-6066-11e4-a52e-4f735466cecf'
|
317
|
-
else
|
318
|
-
'ELEMENT'
|
319
|
-
end
|
320
|
-
@id.is_a?(Hash) ? @id : {key => @id}
|
317
|
+
@id.is_a?(Hash) ? @id : {ELEMENT_KEY => @id}
|
321
318
|
end
|
322
319
|
|
323
320
|
private
|
@@ -19,191 +19,122 @@
|
|
19
19
|
|
20
20
|
module Selenium
|
21
21
|
module WebDriver
|
22
|
-
module Error
|
22
|
+
module Error
|
23
23
|
|
24
24
|
#
|
25
|
-
# Returns exception from
|
26
|
-
# @param [
|
25
|
+
# Returns exception from its string representation.
|
26
|
+
# @param [String, nil] error
|
27
27
|
#
|
28
28
|
|
29
|
-
def self.
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
when String
|
36
|
-
klass_name = code.split(' ').map(&:capitalize).join.sub(/Error$/, '')
|
37
|
-
const_get("#{klass_name}Error", false)
|
38
|
-
end
|
39
|
-
rescue KeyError, NameError
|
29
|
+
def self.for_error(error)
|
30
|
+
return if error.nil?
|
31
|
+
|
32
|
+
klass_name = error.split(' ').map(&:capitalize).join.sub(/Error$/, '')
|
33
|
+
const_get("#{klass_name}Error", false)
|
34
|
+
rescue NameError
|
40
35
|
WebDriverError
|
41
36
|
end
|
42
37
|
|
43
38
|
class WebDriverError < StandardError; end
|
44
39
|
|
45
|
-
class IndexOutOfBoundsError < WebDriverError; end # 1
|
46
|
-
class NoCollectionError < WebDriverError; end # 2
|
47
|
-
class NoStringError < WebDriverError; end # 3
|
48
|
-
class NoStringLengthError < WebDriverError; end # 4
|
49
|
-
class NoStringWrapperError < WebDriverError; end # 5
|
50
|
-
class NoSuchDriverError < WebDriverError; end # 6
|
51
|
-
|
52
40
|
#
|
53
41
|
# An element could not be located on the page using the given search parameters.
|
54
42
|
#
|
55
43
|
|
56
|
-
class NoSuchElementError < WebDriverError; end
|
44
|
+
class NoSuchElementError < WebDriverError; end
|
57
45
|
|
58
46
|
#
|
59
47
|
# A command to switch to a frame could not be satisfied because the frame could not be found.
|
60
48
|
#
|
61
49
|
|
62
|
-
class NoSuchFrameError < WebDriverError; end
|
50
|
+
class NoSuchFrameError < WebDriverError; end
|
63
51
|
|
64
52
|
#
|
65
53
|
# A command could not be executed because the remote end is not aware of it.
|
66
54
|
#
|
67
55
|
|
68
|
-
class UnknownCommandError < WebDriverError; end
|
56
|
+
class UnknownCommandError < WebDriverError; end
|
69
57
|
|
70
58
|
#
|
71
59
|
# A command failed because the referenced element is no longer attached to the DOM.
|
72
60
|
#
|
73
61
|
|
74
|
-
class StaleElementReferenceError < WebDriverError; end
|
75
|
-
|
76
|
-
#
|
77
|
-
# Raised to indicate that although an element is present on the DOM, it is not visible, and
|
78
|
-
# so is not able to be interacted with.
|
79
|
-
#
|
80
|
-
|
81
|
-
class ElementNotVisibleError < WebDriverError; end # 11
|
62
|
+
class StaleElementReferenceError < WebDriverError; end
|
82
63
|
|
83
64
|
#
|
84
65
|
# The target element is in an invalid state, rendering it impossible to interact with, for
|
85
66
|
# example if you click a disabled element.
|
86
67
|
#
|
87
68
|
|
88
|
-
class InvalidElementStateError < WebDriverError; end
|
69
|
+
class InvalidElementStateError < WebDriverError; end
|
89
70
|
|
90
71
|
#
|
91
72
|
# An unknown error occurred in the remote end while processing the command.
|
92
73
|
#
|
93
74
|
|
94
|
-
class UnknownError < WebDriverError; end
|
95
|
-
class ExpectedError < WebDriverError; end # 14
|
96
|
-
|
97
|
-
#
|
98
|
-
# An attempt was made to select an element that cannot be selected.
|
99
|
-
#
|
100
|
-
|
101
|
-
class ElementNotSelectableError < WebDriverError; end # 15
|
102
|
-
class NoSuchDocumentError < WebDriverError; end # 16
|
75
|
+
class UnknownError < WebDriverError; end
|
103
76
|
|
104
77
|
#
|
105
78
|
# An error occurred while executing JavaScript supplied by the user.
|
106
79
|
#
|
107
80
|
|
108
|
-
class JavascriptError < WebDriverError; end
|
109
|
-
class NoScriptResultError < WebDriverError; end # 18
|
81
|
+
class JavascriptError < WebDriverError; end
|
110
82
|
|
111
83
|
#
|
112
|
-
# An
|
84
|
+
# An operation did not complete before its timeout expired.
|
113
85
|
#
|
114
86
|
|
115
|
-
class
|
116
|
-
class NoSuchCollectionError < WebDriverError; end # 20
|
87
|
+
class TimeoutError < WebDriverError; end
|
117
88
|
|
118
89
|
#
|
119
|
-
#
|
90
|
+
# A command to switch to a window could not be satisfied because
|
91
|
+
# the window could not be found.
|
120
92
|
#
|
121
93
|
|
122
|
-
class
|
123
|
-
|
124
|
-
class NullPointerError < WebDriverError; end # 22
|
125
|
-
class NoSuchWindowError < WebDriverError; end # 23
|
94
|
+
class NoSuchWindowError < WebDriverError; end
|
126
95
|
|
127
96
|
#
|
128
97
|
# An illegal attempt was made to set a cookie under a different domain than the current page.
|
129
98
|
#
|
130
99
|
|
131
|
-
class InvalidCookieDomainError < WebDriverError; end
|
100
|
+
class InvalidCookieDomainError < WebDriverError; end
|
132
101
|
|
133
102
|
#
|
134
103
|
# A command to set a cookie's value could not be satisfied.
|
135
104
|
#
|
136
105
|
|
137
|
-
class UnableToSetCookieError < WebDriverError; end
|
138
|
-
|
139
|
-
#
|
140
|
-
# Raised when an alert dialog is present that has not been dealt with.
|
141
|
-
#
|
142
|
-
class UnhandledAlertError < WebDriverError; end # 26
|
106
|
+
class UnableToSetCookieError < WebDriverError; end
|
143
107
|
|
144
108
|
#
|
145
109
|
# An attempt was made to operate on a modal dialog when one was not open:
|
146
110
|
#
|
147
|
-
# * W3C dialect is NoSuchAlertError
|
148
|
-
# * OSS dialect is NoAlertPresentError
|
149
|
-
#
|
150
|
-
# We want to allow clients to rescue NoSuchAlertError as a superclass for
|
151
|
-
# dialect-agnostic implementation, so NoAlertPresentError should inherit from it.
|
152
|
-
#
|
153
111
|
|
154
112
|
class NoSuchAlertError < WebDriverError; end
|
155
|
-
class NoAlertPresentError < NoSuchAlertError; end # 27
|
156
113
|
|
157
114
|
#
|
158
115
|
# A script did not complete before its timeout expired.
|
159
116
|
#
|
160
117
|
|
161
|
-
class
|
162
|
-
|
163
|
-
#
|
164
|
-
# The coordinates provided to an interactions operation are invalid.
|
165
|
-
#
|
166
|
-
|
167
|
-
class InvalidElementCoordinatesError < WebDriverError; end # 29
|
168
|
-
|
169
|
-
#
|
170
|
-
# Indicates that IME support is not available. This exception is rasied for every IME-related
|
171
|
-
# method call if IME support is not available on the machine.
|
172
|
-
#
|
173
|
-
|
174
|
-
class IMENotAvailableError < WebDriverError; end # 30
|
175
|
-
|
176
|
-
#
|
177
|
-
# Indicates that activating an IME engine has failed.
|
178
|
-
#
|
179
|
-
|
180
|
-
class IMEEngineActivationFailedError < WebDriverError; end # 31
|
118
|
+
class ScriptTimeoutError < WebDriverError; end
|
181
119
|
|
182
120
|
#
|
183
121
|
# Argument was an invalid selector.
|
184
122
|
#
|
185
123
|
|
186
|
-
class InvalidSelectorError < WebDriverError; end
|
124
|
+
class InvalidSelectorError < WebDriverError; end
|
187
125
|
|
188
126
|
#
|
189
127
|
# A new session could not be created.
|
190
128
|
#
|
191
129
|
|
192
|
-
class SessionNotCreatedError < WebDriverError; end
|
130
|
+
class SessionNotCreatedError < WebDriverError; end
|
193
131
|
|
194
132
|
#
|
195
133
|
# The target for mouse interaction is not in the browser's viewport and cannot be brought
|
196
134
|
# into that viewport.
|
197
135
|
#
|
198
136
|
|
199
|
-
class MoveTargetOutOfBoundsError < WebDriverError; end
|
200
|
-
|
201
|
-
#
|
202
|
-
# Indicates that the XPath selector is invalid
|
203
|
-
#
|
204
|
-
|
205
|
-
class InvalidXpathSelectorError < WebDriverError; end
|
206
|
-
class InvalidXpathSelectorReturnTyperError < WebDriverError; end
|
137
|
+
class MoveTargetOutOfBoundsError < WebDriverError; end
|
207
138
|
|
208
139
|
#
|
209
140
|
# A command could not be completed because the element is not pointer or keyboard
|
@@ -271,113 +202,6 @@ module Selenium
|
|
271
202
|
|
272
203
|
class UnsupportedOperationError < WebDriverError; end
|
273
204
|
|
274
|
-
# Aliases for OSS dialect.
|
275
|
-
ScriptTimeoutError = Class.new(ScriptTimeOutError)
|
276
|
-
TimeoutError = Class.new(TimeOutError)
|
277
|
-
NoAlertOpenError = Class.new(NoAlertPresentError)
|
278
|
-
|
279
|
-
# Aliases for backwards compatibility.
|
280
|
-
ObsoleteElementError = Class.new(StaleElementReferenceError)
|
281
|
-
UnhandledError = Class.new(UnknownError)
|
282
|
-
UnexpectedJavascriptError = Class.new(JavascriptError)
|
283
|
-
ElementNotDisplayedError = Class.new(ElementNotVisibleError)
|
284
|
-
|
285
|
-
#
|
286
|
-
# @api private
|
287
|
-
#
|
288
|
-
|
289
|
-
ERRORS = {
|
290
|
-
1 => IndexOutOfBoundsError,
|
291
|
-
2 => NoCollectionError,
|
292
|
-
3 => NoStringError,
|
293
|
-
4 => NoStringLengthError,
|
294
|
-
5 => NoStringWrapperError,
|
295
|
-
6 => NoSuchDriverError,
|
296
|
-
7 => NoSuchElementError,
|
297
|
-
8 => NoSuchFrameError,
|
298
|
-
9 => UnknownCommandError,
|
299
|
-
10 => StaleElementReferenceError,
|
300
|
-
11 => ElementNotVisibleError,
|
301
|
-
12 => InvalidElementStateError,
|
302
|
-
13 => UnknownError,
|
303
|
-
14 => ExpectedError,
|
304
|
-
15 => ElementNotSelectableError,
|
305
|
-
16 => NoSuchDocumentError,
|
306
|
-
17 => JavascriptError,
|
307
|
-
18 => NoScriptResultError,
|
308
|
-
19 => XPathLookupError,
|
309
|
-
20 => NoSuchCollectionError,
|
310
|
-
21 => TimeOutError,
|
311
|
-
22 => NullPointerError,
|
312
|
-
23 => NoSuchWindowError,
|
313
|
-
24 => InvalidCookieDomainError,
|
314
|
-
25 => UnableToSetCookieError,
|
315
|
-
26 => UnhandledAlertError,
|
316
|
-
27 => NoAlertPresentError,
|
317
|
-
28 => ScriptTimeOutError,
|
318
|
-
29 => InvalidElementCoordinatesError,
|
319
|
-
30 => IMENotAvailableError,
|
320
|
-
31 => IMEEngineActivationFailedError,
|
321
|
-
32 => InvalidSelectorError,
|
322
|
-
33 => SessionNotCreatedError,
|
323
|
-
34 => MoveTargetOutOfBoundsError,
|
324
|
-
# The following are W3C-specific errors,
|
325
|
-
# they don't really need error codes, we just make them up!
|
326
|
-
51 => InvalidXpathSelectorError,
|
327
|
-
52 => InvalidXpathSelectorReturnTyperError,
|
328
|
-
60 => ElementNotInteractableError,
|
329
|
-
61 => InvalidArgumentError,
|
330
|
-
62 => NoSuchCookieError,
|
331
|
-
63 => UnableToCaptureScreenError
|
332
|
-
}.freeze
|
333
|
-
|
334
|
-
DEPRECATED_ERRORS = {
|
335
|
-
IndexOutOfBoundsError: nil,
|
336
|
-
NoCollectionError: nil,
|
337
|
-
NoStringError: nil,
|
338
|
-
NoStringLengthError: nil,
|
339
|
-
NoStringWrapperError: nil,
|
340
|
-
NoSuchDriverError: nil,
|
341
|
-
ElementNotVisibleError: ElementNotInteractableError,
|
342
|
-
InvalidElementStateError: ElementNotInteractableError,
|
343
|
-
ElementNotSelectableError: ElementNotInteractableError,
|
344
|
-
ExpectedError: nil,
|
345
|
-
NoSuchDocumentError: nil,
|
346
|
-
NoScriptResultError: nil,
|
347
|
-
XPathLookupError: InvalidSelectorError,
|
348
|
-
NoSuchCollectionError: nil,
|
349
|
-
UnhandledAlertError: UnexpectedAlertOpenError,
|
350
|
-
NoAlertPresentError: NoSuchAlertError,
|
351
|
-
NoAlertOpenError: NoSuchAlertError,
|
352
|
-
ScriptTimeOutError: ScriptTimeoutError,
|
353
|
-
InvalidElementCoordinatesError: nil,
|
354
|
-
IMENotAvailableError: nil,
|
355
|
-
IMEEngineActivationFailedError: nil,
|
356
|
-
InvalidXpathSelectorError: InvalidSelectorError,
|
357
|
-
InvalidXpathSelectorReturnTyperError: InvalidSelectorError,
|
358
|
-
TimeOutError: TimeoutError,
|
359
|
-
ObsoleteElementError: StaleElementReferenceError,
|
360
|
-
UnhandledError: UnknownError,
|
361
|
-
UnexpectedJavascriptError: JavascriptError,
|
362
|
-
ElementNotDisplayedError: ElementNotInteractableError
|
363
|
-
}.freeze
|
364
|
-
|
365
|
-
DEPRECATED_ERRORS.keys.each do |oss_error|
|
366
|
-
remove_const oss_error
|
367
|
-
end
|
368
|
-
|
369
|
-
def self.const_missing(const_name)
|
370
|
-
super unless DEPRECATED_ERRORS.key?(const_name)
|
371
|
-
if DEPRECATED_ERRORS[const_name]
|
372
|
-
WebDriver.logger.deprecate("Selenium::WebDriver::Error::#{const_name}",
|
373
|
-
"#{DEPRECATED_ERRORS[const_name]} (ensure the driver supports W3C WebDriver specification)")
|
374
|
-
DEPRECATED_ERRORS[const_name]
|
375
|
-
else
|
376
|
-
WebDriver.logger.deprecate("Selenium::WebDriver::Error::#{const_name}")
|
377
|
-
WebDriverError
|
378
|
-
end
|
379
|
-
end
|
380
|
-
|
381
205
|
end # Error
|
382
206
|
end # WebDriver
|
383
207
|
end # Selenium
|
@@ -22,7 +22,7 @@ module Selenium
|
|
22
22
|
module KeyActions
|
23
23
|
#
|
24
24
|
# Performs a key press. Does not release the key - subsequent interactions may assume it's kept pressed.
|
25
|
-
# Note that the key is never released implicitly - either
|
25
|
+
# Note that the key is never released implicitly - either ActionBuilder#key_up(key) or ActionBuilder#release_actions
|
26
26
|
# must be called to release the key.
|
27
27
|
#
|
28
28
|
# @example Press a key
|
@@ -41,7 +41,7 @@ module Selenium
|
|
41
41
|
# @param [Element] element An optional element to move to first
|
42
42
|
# @param [Symbol, String] key The key to press
|
43
43
|
# @param [Symbol, String] device Optional name of the KeyInput device to press the key on
|
44
|
-
# @return [
|
44
|
+
# @return [ActionBuilder] A self reference
|
45
45
|
#
|
46
46
|
|
47
47
|
def key_down(*args, device: nil)
|
@@ -68,7 +68,7 @@ module Selenium
|
|
68
68
|
# @param [Element] element An optional element to move to first
|
69
69
|
# @param [Symbol, String] key The key to release
|
70
70
|
# @param [Symbol, String] device Optional name of the KeyInput device to release the key on
|
71
|
-
# @return [
|
71
|
+
# @return [ActionBuilder] A self reference
|
72
72
|
#
|
73
73
|
|
74
74
|
def key_up(*args, device: nil)
|
@@ -98,7 +98,7 @@ module Selenium
|
|
98
98
|
# @param [Element] element An optional element to move to first
|
99
99
|
# @param [Array, Symbol, String] keys The key(s) to press and release
|
100
100
|
# @param [Symbol, String] device Optional name of the KeyInput device to press and release the keys on
|
101
|
-
# @return [
|
101
|
+
# @return [ActionBuilder] A self reference
|
102
102
|
#
|
103
103
|
|
104
104
|
def send_keys(*args, device: nil)
|
@@ -130,7 +130,7 @@ module Selenium
|
|
130
130
|
# @option args [Symbol, String] key The key to perform the action with
|
131
131
|
# @param [Symbol] action The name of the key action to perform
|
132
132
|
# @param [Symbol, String] device optional name of the KeyInput device to press the key on
|
133
|
-
# @return [
|
133
|
+
# @return [ActionBuilder] A self reference
|
134
134
|
#
|
135
135
|
|
136
136
|
def key_action(*args, action: nil, device: nil)
|
@@ -42,7 +42,7 @@ module Selenium
|
|
42
42
|
# @param [Selenium::WebDriver::Interactions::PointerPress::BUTTONS] button the button to press.
|
43
43
|
# @param [Symbol || String] device optional name of the PointerInput device with the button
|
44
44
|
# that will be pressed
|
45
|
-
# @return [
|
45
|
+
# @return [ActionBuilder] A self reference.
|
46
46
|
#
|
47
47
|
|
48
48
|
def pointer_down(button, device: nil)
|
@@ -59,7 +59,7 @@ module Selenium
|
|
59
59
|
# @param [Selenium::WebDriver::Interactions::PointerPress::BUTTONS] button the button to release.
|
60
60
|
# @param [Symbol || String] device optional name of the PointerInput device with the button that will
|
61
61
|
# be released
|
62
|
-
# @return [
|
62
|
+
# @return [ActionBuilder] A self reference.
|
63
63
|
#
|
64
64
|
|
65
65
|
def pointer_up(button, device: nil)
|
@@ -71,7 +71,7 @@ module Selenium
|
|
71
71
|
# view and its location is calculated using getBoundingClientRect. Then the
|
72
72
|
# mouse is moved to optional offset coordinates from the element.
|
73
73
|
#
|
74
|
-
# This is adapted to be backward compatible from non-
|
74
|
+
# This is adapted to be backward compatible from non- actions. calculates offset from the center point
|
75
75
|
# of the element
|
76
76
|
#
|
77
77
|
# Note that when using offsets, both coordinates need to be passed.
|
@@ -92,7 +92,7 @@ module Selenium
|
|
92
92
|
# @param [Integer] down_by Optional offset from the top-left corner. A negative value means
|
93
93
|
# coordinates above the element.
|
94
94
|
# @param [Symbol || String] device optional name of the PointerInput device to move.
|
95
|
-
# @return [
|
95
|
+
# @return [ActionBuilder] A self reference.
|
96
96
|
#
|
97
97
|
|
98
98
|
def move_to(element, right_by = nil, down_by = nil, device: nil)
|
@@ -129,7 +129,7 @@ module Selenium
|
|
129
129
|
# @param [Integer] right_by horizontal offset. A negative value means moving the mouse left.
|
130
130
|
# @param [Integer] down_by vertical offset. A negative value means moving the mouse up.
|
131
131
|
# @param [Symbol || String] device optional name of the PointerInput device to move
|
132
|
-
# @return [
|
132
|
+
# @return [ActionBuilder] A self reference.
|
133
133
|
# @raise [MoveTargetOutOfBoundsError] if the provided offset is outside the document's boundaries.
|
134
134
|
#
|
135
135
|
|
@@ -156,7 +156,7 @@ module Selenium
|
|
156
156
|
# @param [Integer] x horizontal position. Equivalent to a css 'left' value.
|
157
157
|
# @param [Integer] y vertical position. Equivalent to a css 'top' value.
|
158
158
|
# @param [Symbol || String] device optional name of the PointerInput device to move
|
159
|
-
# @return [
|
159
|
+
# @return [ActionBuilder] A self reference.
|
160
160
|
# @raise [MoveTargetOutOfBoundsError] if the provided x or y value is outside the document's boundaries.
|
161
161
|
#
|
162
162
|
|
@@ -183,7 +183,7 @@ module Selenium
|
|
183
183
|
#
|
184
184
|
# @param [Selenium::WebDriver::Element] element the element to move to and click.
|
185
185
|
# @param [Symbol || String] device optional name of the PointerInput device to click with
|
186
|
-
# @return [
|
186
|
+
# @return [ActionBuilder] A self reference.
|
187
187
|
#
|
188
188
|
|
189
189
|
def click_and_hold(element = nil, device: nil)
|
@@ -202,7 +202,7 @@ module Selenium
|
|
202
202
|
#
|
203
203
|
# @param [Symbol || String] device optional name of the PointerInput device with the button
|
204
204
|
# that will be released
|
205
|
-
# @return [
|
205
|
+
# @return [ActionBuilder] A self reference.
|
206
206
|
#
|
207
207
|
|
208
208
|
def release(device: nil)
|
@@ -229,7 +229,7 @@ module Selenium
|
|
229
229
|
# @param [Selenium::WebDriver::Element] element An optional element to click.
|
230
230
|
# @param [Symbol || String] device optional name of the PointerInput device with the button
|
231
231
|
# that will be clicked
|
232
|
-
# @return [
|
232
|
+
# @return [ActionBuilder] A self reference.
|
233
233
|
#
|
234
234
|
|
235
235
|
def click(element = nil, device: nil)
|
@@ -258,7 +258,7 @@ module Selenium
|
|
258
258
|
# @param [Selenium::WebDriver::Element] element An optional element to move to.
|
259
259
|
# @param [Symbol || String] device optional name of the PointerInput device with the button
|
260
260
|
# that will be double-clicked
|
261
|
-
# @return [
|
261
|
+
# @return [ActionBuilder] A self reference.
|
262
262
|
#
|
263
263
|
|
264
264
|
def double_click(element = nil, device: nil)
|
@@ -286,7 +286,7 @@ module Selenium
|
|
286
286
|
# @param [Selenium::WebDriver::Element] element An element to context click.
|
287
287
|
# @param [Symbol || String] device optional name of the PointerInput device with the button
|
288
288
|
# that will be context-clicked
|
289
|
-
# @return [
|
289
|
+
# @return [ActionBuilder] A self reference.
|
290
290
|
#
|
291
291
|
|
292
292
|
def context_click(element = nil, device: nil)
|
@@ -312,7 +312,7 @@ module Selenium
|
|
312
312
|
# mouse at.
|
313
313
|
# @param [Symbol || String] device optional name of the PointerInput device with the button
|
314
314
|
# that will perform the drag and drop
|
315
|
-
# @return [
|
315
|
+
# @return [ActionBuilder] A self reference.
|
316
316
|
#
|
317
317
|
|
318
318
|
def drag_and_drop(source, target, device: nil)
|
@@ -336,7 +336,7 @@ module Selenium
|
|
336
336
|
# @param [Integer] down_by vertical move offset.
|
337
337
|
# @param [Symbol || String] device optional name of the PointerInput device with the button
|
338
338
|
# that will perform the drag and drop
|
339
|
-
# @return [
|
339
|
+
# @return [ActionBuilder] A self reference.
|
340
340
|
#
|
341
341
|
|
342
342
|
def drag_and_drop_by(source, right_by, down_by, device: nil)
|