Keyboard
Keyboard provides an api for managing a virtual keyboard. The high level api is keyboard.type
, which takes raw characters and generates proper keydown, keypress/input, and keyup events on your page.
For finer control, you can use keyboard.down
, keyboard.up
, and keyboard.insertText
to manually fire events as if they were generated from a real keyboard.
An example of holding down Shift
in order to select and delete some text:
An example of pressing A
NOTE On MacOS, keyboard shortcuts like
⌘ A
-> Select All do not work. See #1313
- keyboard.down(key)
- keyboard.insertText(text)
- keyboard.press(key[, options])
- keyboard.type(text[, options])
- keyboard.up(key)
#
keyboard.down(key)key
<string> Name of the key to press or a character to generate, such asArrowLeft
ora
.- returns: <Promise>
Dispatches a keydown
event.
key
can specify the intended keyboardEvent.key value or a single character to generate the text for. A superset of the key
values can be found here. Examples of the keys are:
F1
- F12
, Digit0
- Digit9
, KeyA
- KeyZ
, Backquote
, Minus
, Equal
, Backslash
, Backspace
, Tab
, Delete
, Escape
, ArrowDown
, End
, Enter
, Home
, Insert
, PageDown
, PageUp
, ArrowRight
, ArrowUp
, etc.
Following modification shortcuts are also suported: Shift
, Control
, Alt
, Meta
, ShiftLeft
.
Holding down Shift
will type the text that corresponds to the key
in the upper case.
If key
is a single character, it is case-sensitive, so the values a
and A
will generate different respective texts.
If key
is a modifier key, Shift
, Meta
, Control
, or Alt
, subsequent key presses will be sent with that modifier active. To release the modifier key, use keyboard.up
.
After the key is pressed once, subsequent calls to keyboard.down
will have repeat set to true. To release the key, use keyboard.up
.
NOTE Modifier keys DO influence
keyboard.down
. Holding downShift
will type the text in upper case.
#
keyboard.insertText(text)Dispatches only input
event, does not emit the keydown
, keyup
or keypress
events.
NOTE Modifier keys DO NOT effect
keyboard.insertText
. Holding downShift
will not type the text in upper case.
#
keyboard.press(key[, options])key
<string> Name of the key to press or a character to generate, such asArrowLeft
ora
.options
<Object>delay
<number> Time to wait betweenkeydown
andkeyup
in milliseconds. Defaults to 0.
- returns: <Promise>
key
can specify the intended keyboardEvent.key value or a single character to generate the text for. A superset of the key
values can be found here. Examples of the keys are:
F1
- F12
, Digit0
- Digit9
, KeyA
- KeyZ
, Backquote
, Minus
, Equal
, Backslash
, Backspace
, Tab
, Delete
, Escape
, ArrowDown
, End
, Enter
, Home
, Insert
, PageDown
, PageUp
, ArrowRight
, ArrowUp
, etc.
Following modification shortcuts are also suported: Shift
, Control
, Alt
, Meta
, ShiftLeft
.
Holding down Shift
will type the text that corresponds to the key
in the upper case.
If key
is a single character, it is case-sensitive, so the values a
and A
will generate different respective texts.
Shortcuts such as key: "Control+o"
or key: "Control+Shift+T"
are supported as well. When speficied with the modifier, modifier is pressed and being held while the subsequent key is being pressed.
Shortcut for keyboard.down
and keyboard.up
.
#
keyboard.type(text[, options])text
<string> A text to type into a focused element.options
<Object>delay
<number> Time to wait between key presses in milliseconds. Defaults to 0.
- returns: <Promise>
Sends a keydown
, keypress
/input
, and keyup
event for each character in the text.
To press a special key, like Control
or ArrowDown
, use keyboard.press
.
NOTE Modifier keys DO NOT effect
keyboard.type
. Holding downShift
will not type the text in upper case.
#
keyboard.up(key)key
<string> Name of the key to press or a character to generate, such asArrowLeft
ora
.- returns: <Promise>
Dispatches a keyup
event.