class Selenium::WebDriver::ActionBuilder
The ActionBuilder provides the user a way to set up and perform complex user interactions.
This class should not be instantiated directly, but is created by Selenium::WebDriver::DriverExtensions::HasInputDevices#action, which is available on Driver instances that support the user interaction API.
Example:
driver.action.key_down(:shift). click(element). click(second_element). key_up(:shift). drag_and_drop(element, third_element). perform
Public Class Methods
new(mouse, keyboard)
click to toggle source
@api private
# File lib/selenium/webdriver/common/action_builder.rb, line 28 def initialize(mouse, keyboard) @devices = { :mouse => mouse, :keyboard => keyboard } @actions = [] end
Public Instance Methods
click(element = nil)
click to toggle source
# File lib/selenium/webdriver/common/action_builder.rb, line 74 def click(element = nil) @actions << [:mouse, :click, [element]] self end
click_and_hold(element)
click to toggle source
# File lib/selenium/webdriver/common/action_builder.rb, line 64 def click_and_hold(element) @actions << [:mouse, :down, [element]] self end
context_click(element = nil)
click to toggle source
# File lib/selenium/webdriver/common/action_builder.rb, line 99 def context_click(element = nil) @actions << [:mouse, :context_click, [element]] self end
double_click(element = nil)
click to toggle source
# File lib/selenium/webdriver/common/action_builder.rb, line 79 def double_click(element = nil) @actions << [:mouse, :double_click, [element]] self end
drag_and_drop(source, target)
click to toggle source
# File lib/selenium/webdriver/common/action_builder.rb, line 104 def drag_and_drop(source, target) click_and_hold source move_to target release target self end
drag_and_drop_by(source, right_by, down_by)
click to toggle source
# File lib/selenium/webdriver/common/action_builder.rb, line 112 def drag_and_drop_by(source, right_by, down_by) click_and_hold source move_by right_by, down_by release self end
key_down(*args)
click to toggle source
# File lib/selenium/webdriver/common/action_builder.rb, line 37 def key_down(*args) if args.first.kind_of? Element @actions << [:mouse, :click, [args.shift]] end @actions << [:keyboard, :press, args] self end
key_up(*args)
click to toggle source
# File lib/selenium/webdriver/common/action_builder.rb, line 46 def key_up(*args) if args.first.kind_of? Element @actions << [:mouse, :click, [args.shift]] end @actions << [:keyboard, :release, args] self end
move_by(right_by, down_by)
click to toggle source
# File lib/selenium/webdriver/common/action_builder.rb, line 94 def move_by(right_by, down_by) @actions << [:mouse, :move_by, [right_by, down_by]] self end
move_to(element, right_by = nil, down_by = nil)
click to toggle source
# File lib/selenium/webdriver/common/action_builder.rb, line 84 def move_to(element, right_by = nil, down_by = nil) if right_by && down_by @actions << [:mouse, :move_to, [element, right_by, down_by]] else @actions << [:mouse, :move_to, [element]] end self end
perform()
click to toggle source
# File lib/selenium/webdriver/common/action_builder.rb, line 120 def perform @actions.each { |receiver, method, args| @devices.fetch(receiver).__send__(method, *args) } end
release(element = nil)
click to toggle source
# File lib/selenium/webdriver/common/action_builder.rb, line 69 def release(element = nil) @actions << [:mouse, :up, [element]] self end
send_keys(*args)
click to toggle source
# File lib/selenium/webdriver/common/action_builder.rb, line 55 def send_keys(*args) if args.first.kind_of? Element @actions << [:mouse, :click, [args.shift]] end @actions << [:keyboard, :send_keys, args] self end