Module: Selenium::WebDriver::PointerActions
- Included in:
- ActionBuilder
- Defined in:
- rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb
Instance Attribute Summary collapse
-
#default_move_duration ⇒ Object
By default this is set to 250ms in the ActionBuilder constructor It can be overridden with default_move_duration=.
Instance Method Summary collapse
-
#click(element = nil, button: nil, device: nil) ⇒ ActionBuilder
Clicks in the middle of the given element.
-
#click_and_hold(element = nil, button: nil, device: nil) ⇒ ActionBuilder
Clicks (without releasing) in the middle of the given element.
-
#context_click(element = nil, device: nil) ⇒ ActionBuilder
Performs a context-click at middle of the given element.
-
#double_click(element = nil, device: nil) ⇒ ActionBuilder
Performs a double-click at middle of the given element.
-
#drag_and_drop(source, target, device: nil) ⇒ ActionBuilder
A convenience method that performs click-and-hold at the location of the source element, moves to the location of the target element, then releases the mouse.
-
#drag_and_drop_by(source, right_by, down_by, device: nil) ⇒ ActionBuilder
A convenience method that performs click-and-hold at the location of the source element, moves by a given offset, then releases the mouse.
-
#move_by(right_by, down_by, device: nil, duration: default_move_duration, **opts) ⇒ ActionBuilder
Moves the pointer from its current position by the given offset.
-
#move_to(element, right_by = nil, down_by = nil, **opts) ⇒ ActionBuilder
Moves the pointer to the in-view center point of the given element.
-
#move_to_location(x, y, device: nil, duration: default_move_duration, **opts) ⇒ ActionBuilder
Moves the pointer to a given location in the viewport.
-
#pointer_down(button = :left, device: nil, **opts) ⇒ ActionBuilder
Presses (without releasing) at the current location of the PointerInput device.
-
#pointer_up(button = :left, device: nil, **opts) ⇒ ActionBuilder
Releases the pressed mouse button at the current mouse location of the PointerInput device.
-
#release(button: nil, device: nil) ⇒ ActionBuilder
Releases the depressed left mouse button at the current mouse location.
Instance Attribute Details
#default_move_duration ⇒ Object
By default this is set to 250ms in the ActionBuilder constructor It can be overridden with default_move_duration=
30 31 32 |
# File 'rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 30 def default_move_duration @default_move_duration ||= @duration / 1000.0 # convert ms to seconds end |
Instance Method Details
#click(element = nil, button: nil, device: nil) ⇒ ActionBuilder
Clicks in the middle of the given element. Equivalent to:
driver.action.move_to(element).click
When no element is passed, the current mouse position will be clicked.
227 228 229 230 231 232 |
# File 'rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 227 def click(element = nil, button: nil, device: nil) move_to(element, device: device) if element pointer_down( || :left, device: device) pointer_up( || :left, device: device) self end |
#click_and_hold(element = nil, button: nil, device: nil) ⇒ ActionBuilder
Clicks (without releasing) in the middle of the given element. This is equivalent to:
driver.action.move_to(element).click_and_hold
181 182 183 184 185 |
# File 'rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 181 def click_and_hold(element = nil, button: nil, device: nil) move_to(element, device: device) if element pointer_down( || :left, device: device) self end |
#context_click(element = nil, device: nil) ⇒ ActionBuilder
Performs a context-click at middle of the given element. First performs a move_to to the location of the element.
When no element is passed, the current mouse position will be context-clicked.
284 285 286 |
# File 'rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 284 def context_click(element = nil, device: nil) click(element, button: :right, device: device) end |
#double_click(element = nil, device: nil) ⇒ ActionBuilder
Performs a double-click at middle of the given element. Equivalent to:
driver.action.move_to(element).double_click
When no element is passed, the current mouse position will be double-clicked.
256 257 258 259 260 261 |
# File 'rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 256 def double_click(element = nil, device: nil) move_to(element, device: device) if element click(device: device) click(device: device) self end |
#drag_and_drop(source, target, device: nil) ⇒ ActionBuilder
A convenience method that performs click-and-hold at the location of the source element, moves to the location of the target element, then releases the mouse.
307 308 309 310 311 312 |
# File 'rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 307 def drag_and_drop(source, target, device: nil) click_and_hold(source, device: device) move_to(target, device: device) release(device: device) self end |
#drag_and_drop_by(source, right_by, down_by, device: nil) ⇒ ActionBuilder
A convenience method that performs click-and-hold at the location of the source element, moves by a given offset, then releases the mouse.
331 332 333 334 335 336 |
# File 'rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 331 def drag_and_drop_by(source, right_by, down_by, device: nil) click_and_hold(source, device: device) move_by(right_by, down_by, device: device) release(device: device) self end |
#move_by(right_by, down_by, device: nil, duration: default_move_duration, **opts) ⇒ ActionBuilder
Moves the pointer from its current position by the given offset.
The viewport is not scrolled if the coordinates provided are outside the viewport. MoveTargetOutOfBoundsError will be raised if the offsets are outside the viewport
126 127 128 129 130 131 132 133 134 135 |
# File 'rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 126 def move_by(right_by, down_by, device: nil, duration: default_move_duration, **opts) pointer = pointer_input(device) pointer.create_pointer_move(duration: duration, x: Integer(right_by), y: Integer(down_by), origin: Interactions::PointerMove::POINTER, **opts) tick(pointer) self end |
#move_to(element, right_by = nil, down_by = nil, **opts) ⇒ ActionBuilder
Moves the pointer to the in-view center point of the given element. Then the pointer is moved to optional offset coordinates.
The element is not scrolled into view. MoveTargetOutOfBoundsError will be raised if element with offset is outside the viewport
When using offsets, both coordinates need to be passed.
98 99 100 101 102 103 104 105 106 107 |
# File 'rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 98 def move_to(element, right_by = nil, down_by = nil, **opts) pointer = pointer_input(opts.delete(:device)) pointer.create_pointer_move(duration: opts.delete(:duration) || default_move_duration, x: right_by || 0, y: down_by || 0, origin: element, **opts) tick(pointer) self end |
#move_to_location(x, y, device: nil, duration: default_move_duration, **opts) ⇒ ActionBuilder
Moves the pointer to a given location in the viewport.
The viewport is not scrolled if the coordinates provided are outside the viewport. MoveTargetOutOfBoundsError will be raised if the offsets are outside the viewport
154 155 156 157 158 159 160 161 162 163 |
# File 'rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 154 def move_to_location(x, y, device: nil, duration: default_move_duration, **opts) pointer = pointer_input(device) pointer.create_pointer_move(duration: duration, x: Integer(x), y: Integer(y), origin: Interactions::PointerMove::VIEWPORT, **opts) tick(pointer) self end |
#pointer_down(button = :left, device: nil, **opts) ⇒ ActionBuilder
Presses (without releasing) at the current location of the PointerInput device. This is equivalent to:
driver.action.click_and_hold(nil)
49 50 51 |
# File 'rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 49 def pointer_down( = :left, device: nil, **opts) (, :create_pointer_down, device: device, **opts) end |
#pointer_up(button = :left, device: nil, **opts) ⇒ ActionBuilder
Releases the pressed mouse button at the current mouse location of the PointerInput device.
66 67 68 |
# File 'rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 66 def pointer_up( = :left, device: nil, **opts) (, :create_pointer_up, device: device, **opts) end |
#release(button: nil, device: nil) ⇒ ActionBuilder
Releases the depressed left mouse button at the current mouse location.
200 201 202 203 |
# File 'rb/lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 200 def release(button: nil, device: nil) pointer_up( || :left, device: device) self end |