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.
41 42 43 44 45 46 47 48 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 41 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
80 81 82 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 80 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
64 65 66 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 64 def add_pointer_input(kind, name) add_input(Interactions.pointer(kind, name: name)) end |
#add_wheel_input(name) ⇒ Interactions::WheelInput
Adds a WheelInput device
96 97 98 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 96 def add_wheel_input(name) add_input(Interactions.wheel(name)) end |
#clear_all_actions ⇒ Object
Clears all actions from the builder.
207 208 209 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 207 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
108 109 110 111 112 113 114 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 108 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
132 133 134 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 132 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.
162 163 164 165 166 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 162 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.
184 185 186 187 188 189 190 191 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 184 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.
197 198 199 200 201 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 197 def perform @bridge.send_actions @devices.filter_map(&:encode) clear_all_actions nil end |
#pointer_inputs ⇒ Array
Retrieves the current PointerInput devices
122 123 124 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 122 def pointer_inputs @devices.select { |device| device.type == Interactions::POINTER } end |
#release_actions ⇒ Object
Releases all action states from the browser.
215 216 217 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 215 def release_actions @bridge.release_actions end |
#wheel_inputs ⇒ Selenium::WebDriver::Interactions::InputDevice
Retrieves the current WheelInput device
142 143 144 |
# File 'lib/selenium/webdriver/common/action_builder.rb', line 142 def wheel_inputs @devices.select { |device| device.type == Interactions::WHEEL } end |