Class: Selenium::WebDriver::ActionBuilder
- Inherits:
-
Object
- Object
- Selenium::WebDriver::ActionBuilder
- Includes:
- KeyActions, PointerActions, WheelActions
- Defined in:
- lib/selenium/webdriver/common/action_builder.rb
Instance Attribute Summary collapse
-
#devices ⇒ Object
readonly
Returns the value of attribute devices.
Attributes included from WheelActions
Attributes included from PointerActions
Instance Method Summary collapse
-
#add_key_input(name) ⇒ Interactions::KeyInput
Adds a KeyInput device.
-
#add_pointer_input(kind, name) ⇒ Interactions::PointerInput
Adds a PointerInput device of the given kind.
-
#add_wheel_input(name) ⇒ Interactions::WheelInput
Adds a WheelInput device.
-
#clear_all_actions ⇒ Object
Clears all actions from the builder.
-
#device(name: nil, type: nil) ⇒ Selenium::WebDriver::Interactions::InputDevice
Retrieves the input device for the given name or type.
-
#initialize(bridge, devices: [], async: false, duration: 250) ⇒ ActionBuilder
constructor
Initialize a W3C Action Builder.
-
#key_inputs ⇒ Selenium::WebDriver::Interactions::InputDevice
Retrieves the current KeyInput device.
-
#pause(device: nil, duration: 0) ⇒ ActionBuilder
Creates a pause for the given device of the given duration.
-
#pauses(device: nil, number: nil, duration: 0) ⇒ ActionBuilder
Creates multiple pauses for the given device of the given duration.
-
#perform ⇒ Object
Executes the actions added to the builder.
-
#pointer_inputs ⇒ Array
Retrieves the current PointerInput devices.
-
#release_actions ⇒ Object
Releases all action states from the browser.
-
#wheel_inputs ⇒ Selenium::WebDriver::Interactions::InputDevice
Retrieves the current WheelInput device.
Methods included from WheelActions
#scroll_by, #scroll_from, #scroll_to
Methods included from PointerActions
#click, #click_and_hold, #context_click, #double_click, #drag_and_drop, #drag_and_drop_by, #move_by, #move_to, #move_to_location, #pointer_down, #pointer_up, #release
Methods included from KeyActions
#key_down, #key_up, #send_keys
Constructor Details
#initialize(bridge, devices: [], async: false, duration: 250) ⇒ ActionBuilder
Initialize a W3C Action Builder. Differs from previous by requiring a bridge and allowing asynchronous actions. The W3C implementation allows asynchronous actions per device. e.g. A key can be pressed at the same time that the mouse is moving. Keep in mind that pauses must be added for other devices in order to line up the actions correctly when using asynchronous.
43 44 45 46 47 48 49 50 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 43 def initialize(bridge, devices: [], async: false, duration: 250) @bridge = bridge @duration = duration @async = async @devices = [] Array(devices).each { |device| add_input(device) } end |
Instance Attribute Details
#devices ⇒ Object (readonly)
Returns the value of attribute devices.
27 28 29 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 27 def devices @devices end |
Instance Method Details
#add_key_input(name) ⇒ Interactions::KeyInput
Adds a KeyInput device
82 83 84 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 82 def add_key_input(name) add_input(Interactions.key(name)) end |
#add_pointer_input(kind, name) ⇒ Interactions::PointerInput
Adds a PointerInput device of the given kind
66 67 68 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 66 def add_pointer_input(kind, name) add_input(Interactions.pointer(kind, name: name)) end |
#add_wheel_input(name) ⇒ Interactions::WheelInput
Adds a WheelInput device
98 99 100 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 98 def add_wheel_input(name) add_input(Interactions.wheel(name)) end |
#clear_all_actions ⇒ Object
Clears all actions from the builder.
209 210 211 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 209 def clear_all_actions @devices.each(&:clear_actions) end |
#device(name: nil, type: nil) ⇒ Selenium::WebDriver::Interactions::InputDevice
Retrieves the input device for the given name or type
110 111 112 113 114 115 116 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 110 def device(name: nil, type: nil) input = @devices.find { |device| (device.name == name.to_s || name.nil?) && (device.type == type || type.nil?) } raise(ArgumentError, "Can not find device: #{name}") if name && input.nil? input end |
#key_inputs ⇒ Selenium::WebDriver::Interactions::InputDevice
Retrieves the current KeyInput device
134 135 136 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 134 def key_inputs @devices.select { |device| device.type == Interactions::KEY } end |
#pause(device: nil, duration: 0) ⇒ ActionBuilder
Creates a pause for the given device of the given duration. If no duration is given, the pause will only wait for all actions to complete in that tick.
164 165 166 167 168 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 164 def pause(device: nil, duration: 0) device ||= pointer_input device.create_pause(duration) self end |
#pauses(device: nil, number: nil, duration: 0) ⇒ ActionBuilder
Creates multiple pauses for the given device of the given duration.
186 187 188 189 190 191 192 193 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 186 def pauses(device: nil, number: nil, duration: 0) number ||= 2 device ||= pointer_input duration ||= 0 number.times { device.create_pause(duration) } self end |
#perform ⇒ Object
Executes the actions added to the builder.
199 200 201 202 203 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 199 def perform @bridge.send_actions @devices.filter_map(&:encode) clear_all_actions nil end |
#pointer_inputs ⇒ Array
Retrieves the current PointerInput devices
124 125 126 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 124 def pointer_inputs @devices.select { |device| device.type == Interactions::POINTER } end |
#release_actions ⇒ Object
Releases all action states from the browser.
217 218 219 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 217 def release_actions @bridge.release_actions end |
#wheel_inputs ⇒ Selenium::WebDriver::Interactions::InputDevice
Retrieves the current WheelInput device
144 145 146 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 144 def wheel_inputs @devices.select { |device| device.type == Interactions::WHEEL } end |