class Capybara::Playwright::Node::SendKeys
Constants
- KEYS
- MODIFIERS
Public Class Methods
new(element_or_keyboard, keys)
click to toggle source
# File lib/capybara/playwright/node.rb, line 512 def initialize(element_or_keyboard, keys) @element_or_keyboard = element_or_keyboard holding_keys = [] @executables = keys.each_with_object([]) do |key, executables| if MODIFIERS[key] holding_keys << key else if holding_keys.empty? case key when String executables << TypeText.new(key) when Symbol executables << PressKey.new( key: key_for(key), modifiers: [], ) when Array _key = key.last code = if _key.is_a?(String) && _key.length == 1 _key.upcase elsif _key.is_a?(Symbol) key_for(_key) else raise ArgumentError.new("invalid key: #{_key}. Symbol of 1-length String is expected.") end modifiers = key.first(key.size - 1).map { |k| modifier_for(k) } executables << PressKey.new( key: code, modifiers: modifiers, ) end else modifiers = holding_keys.map { |k| modifier_for(k) } case key when String key.each_char do |char| executables << PressKey.new( key: char.upcase, modifiers: modifiers, ) end when Symbol executables << PressKey.new( key: key_for(key), modifiers: modifiers ) else raise ArgumentError.new("#{key} cannot be handled with holding key #{holding_keys}") end end end end end
Public Instance Methods
execute()
click to toggle source
# File lib/capybara/playwright/node.rb, line 577 def execute @executables.each do |executable| executable.execute_for(@element_or_keyboard) end end
Private Instance Methods
key_for(key)
click to toggle source
# File lib/capybara/playwright/node.rb, line 573 def key_for(key) KEYS[key] or raise ArgumentError.new("invalid key specified: #{key}") end
modifier_for(modifier)
click to toggle source
# File lib/capybara/playwright/node.rb, line 569 def modifier_for(modifier) MODIFIERS[modifier] or raise ArgumentError.new("invalid modifier specified: #{modifier}") end