Module: Selenium::WebDriver::PointerActions
- Included in:
- W3CActionBuilder
- Defined in:
- lib/selenium/webdriver/common/interactions/pointer_actions.rb
Constant Summary collapse
- DEFAULT_MOVE_DURATION =
250 milliseconds
0.25
Instance Method Summary collapse
-
#click(element = nil, device: nil) ⇒ W3CActionBuilder
Clicks in the middle of the given element.
-
#click_and_hold(element = nil, device: nil) ⇒ W3CActionBuilder
Clicks (without releasing) in the middle of the given element.
-
#context_click(element = nil, device: nil) ⇒ W3CActionBuilder
Performs a context-click at middle of the given element.
-
#double_click(element = nil, device: nil) ⇒ W3CActionBuilder
Performs a double-click at middle of the given element.
-
#drag_and_drop(source, target, device: nil) ⇒ W3CActionBuilder
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) ⇒ W3CActionBuilder
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) ⇒ W3CActionBuilder
Moves the mouse from its current position by the given offset.
-
#move_to(element, right_by = nil, down_by = nil, device: nil) ⇒ W3CActionBuilder
Moves the mouse to the middle of the given element.
-
#move_to_location(x, y, device: nil) ⇒ W3CActionBuilder
Moves the mouse to a given location in the viewport.
-
#pointer_down(button, device: nil) ⇒ W3CActionBuilder
Presses (without releasing) at the current location of the PointerInput device.
-
#pointer_up(button, device: nil) ⇒ W3CActionBuilder
Releases the pressed mouse button at the current mouse location of the PointerInput device.
-
#release(device: nil) ⇒ W3CActionBuilder
Releases the depressed left mouse button at the current mouse location.
Instance Method Details
#click(element = nil, device: nil) ⇒ W3CActionBuilder
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 'lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 227 def click(element = 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, device: nil) ⇒ W3CActionBuilder
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 'lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 181 def click_and_hold(element = nil, device: nil) move_to(element, device: device) if element pointer_down(:left, device: device) self end |
#context_click(element = nil, device: nil) ⇒ W3CActionBuilder
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 287 288 289 |
# File 'lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 284 def context_click(element = nil, device: nil) move_to(element, device: device) if element pointer_down(:right, device: device) pointer_up(:right, device: device) self end |
#double_click(element = nil, device: nil) ⇒ W3CActionBuilder
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 '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) ⇒ W3CActionBuilder
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.
310 311 312 313 314 315 |
# File 'lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 310 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) ⇒ W3CActionBuilder
A convenience method that performs click-and-hold at the location of the source element, moves by a given offset, then releases the mouse.
334 335 336 337 338 339 |
# File 'lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 334 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) ⇒ W3CActionBuilder
Moves the mouse from its current position by the given offset. If the coordinates provided are outside the viewport (the mouse will end up outside the browser window) then the viewport is scrolled to match.
128 129 130 131 132 133 134 135 136 |
# File 'lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 128 def move_by(right_by, down_by, device: nil) pointer = get_pointer(device) pointer.create_pointer_move(duration: DEFAULT_MOVE_DURATION, x: Integer(right_by), y: Integer(down_by), origin: Interactions::PointerMove::POINTER) tick(pointer) self end |
#move_to(element, right_by = nil, down_by = nil, device: nil) ⇒ W3CActionBuilder
Moves the mouse to the middle of the given element. The element is scrolled into view and its location is calculated using getBoundingClientRect. Then the mouse is moved to optional offset coordinates from the element.
This is adapted to be backward compatible from non-W3C actions. W3C calculates offset from the center point of the element
Note that when using offsets, both coordinates need to be passed.
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 90 def move_to(element, right_by = nil, down_by = nil, device: nil) pointer = get_pointer(device) # New actions offset is from center of element if right_by || down_by size = element.size left_offset = (size[:width] / 2).to_i top_offset = (size[:height] / 2).to_i left = -left_offset + (right_by || 0) top = -top_offset + (down_by || 0) else left = 0 top = 0 end pointer.create_pointer_move(duration: DEFAULT_MOVE_DURATION, x: left, y: top, element: element) tick(pointer) self end |
#move_to_location(x, y, device: nil) ⇒ W3CActionBuilder
Moves the mouse to a given location in the viewport. If the coordinates provided are outside the viewport (the mouse will end up outside the browser window) then the viewport is scrolled to match.
155 156 157 158 159 160 161 162 163 |
# File 'lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 155 def move_to_location(x, y, device: nil) pointer = get_pointer(device) pointer.create_pointer_move(duration: DEFAULT_MOVE_DURATION, x: Integer(x), y: Integer(y), origin: Interactions::PointerMove::VIEWPORT) tick(pointer) self end |
#pointer_down(button, device: nil) ⇒ W3CActionBuilder
Presses (without releasing) at the current location of the PointerInput device. This is equivalent to:
driver.action.click_and_hold(nil)
40 41 42 |
# File 'lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 40 def pointer_down(, device: nil) (, action: :create_pointer_down, device: device) end |
#pointer_up(button, device: nil) ⇒ W3CActionBuilder
Releases the pressed mouse button at the current mouse location of the PointerInput device.
57 58 59 |
# File 'lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 57 def pointer_up(, device: nil) (, action: :create_pointer_up, device: device) end |
#release(device: nil) ⇒ W3CActionBuilder
Releases the depressed left mouse button at the current mouse location.
200 201 202 203 |
# File 'lib/selenium/webdriver/common/interactions/pointer_actions.rb', line 200 def release(device: nil) pointer_up(:left, device: device) self end |