Class: Capybara::Apparition::Keyboard
- Inherits:
-
Object
- Object
- Capybara::Apparition::Keyboard
- Defined in:
- lib/capybara/apparition/keyboard.rb
Instance Attribute Summary collapse
-
#modifiers ⇒ Object
readonly
Returns the value of attribute modifiers.
Instance Method Summary collapse
- #down(description) ⇒ Object
-
#initialize(page) ⇒ Keyboard
constructor
A new instance of Keyboard.
- #press(key) ⇒ Object
- #type(keys) ⇒ Object
- #up(description) ⇒ Object
- #yield_with_keys(keys = []) ⇒ Object
Constructor Details
#initialize(page) ⇒ Keyboard
Returns a new instance of Keyboard.
7 8 9 10 11 |
# File 'lib/capybara/apparition/keyboard.rb', line 7 def initialize(page) @page = page @modifiers = 0 @pressed_keys = {} end |
Instance Attribute Details
#modifiers ⇒ Object (readonly)
Returns the value of attribute modifiers.
5 6 7 |
# File 'lib/capybara/apparition/keyboard.rb', line 5 def modifiers @modifiers end |
Instance Method Details
#down(description) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/capybara/apparition/keyboard.rb', line 28 def down(description) @modifiers |= modifier_bit(description.key) @pressed_keys[description.key] = description @page.command('Input.dispatchKeyEvent', type: 'keyDown', modifiers: @modifiers, windowsVirtualKeyCode: description.keyCode, code: description.code, key: description.key, text: description.text, unmodifiedText: description.text, autoRepeat: false, location: description.location, isKeypad: description.location == 3) end |
#press(key) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/capybara/apparition/keyboard.rb', line 17 def press(key) if key.is_a? Symbol orig_key = key key = key.to_s.gsub(/([a-z\d])([A-Z])/, '\1_\2').downcase.to_sym warn "The use of :#{orig_key} is deprecated, please use :#{key} instead" unless key == orig_key end description = key_description(key) down(description) up(description) if modifier_bit(description.key).zero? end |
#type(keys) ⇒ Object
13 14 15 |
# File 'lib/capybara/apparition/keyboard.rb', line 13 def type(keys) type_with_modifiers(Array(keys)) end |
#up(description) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/capybara/apparition/keyboard.rb', line 45 def up(description) @modifiers &= ~modifier_bit(description.key) @pressed_keys.delete(description.key) @page.command('Input.dispatchKeyEvent', type: 'keyUp', modifiers: @modifiers, key: description.key, windowsVirtualKeyCode: description.keyCode, code: description.code, location: description.location) end |
#yield_with_keys(keys = []) ⇒ Object
58 59 60 61 62 63 64 65 66 67 |
# File 'lib/capybara/apparition/keyboard.rb', line 58 def yield_with_keys(keys = []) old_pressed_keys = @pressed_keys @pressed_keys = {} keys.each do |key| press key end yield release_pressed_keys @pressed_keys = old_pressed_keys end |