class: Keyboard
Keyboard 提供用于管理虚拟键盘的API. 高级API是 keyboard.type
, 它接收原始字符并在页面上生成适当的 keydown、keypress/input 和 keyup 事件。
要进行更精细的控制, 可以使用 keyboard.down
, keyboard.up
, 和 keyboard.sendCharacter
手动触发事件,就像从真实键盘生成的一样。
来看一个例子, 当按住 Shift
以便选择和删除某些文本:
await page.keyboard.type('Hello World!');
await page.keyboard.press('ArrowLeft');
await page.keyboard.down('Shift');
for (let i = 0; i < ' World'.length; i++)
await page.keyboard.press('ArrowLeft');
await page.keyboard.up('Shift');
await page.keyboard.press('Backspace');
// 最终文本显示 'Hello!'
另一个例子, 当按下 A
await page.keyboard.down('Shift');
await page.keyboard.press('KeyA');
await page.keyboard.up('Shift');
注意 在 MacOS 上, 键盘快捷键比如
⌘ A
-> 全选不起作用. 参见 #1313
keyboard.down(key[, options])
key
<[string]> 按下的键的名称, 例如ArrowLeft
. 了解全部的键名参见 [USKeyboardLayout]。options
<[Object]>text
<[string]> 如果指定,则使用此文本生成输入事件。
- returns: <[Promise]>
派发一个 keydown
事件.
如果key
是单个字符,并且除了按住Shift
之外没有其他修饰键的情况下,还会生成keypress
/input
事件。可以通过指定text
选项来强制生成输入事件。
如果key
是组件键, 比如 Shift
,Meta
,Control
或Alt
,则随后的按键将在激活该组合键的情况下发送。要释放组合键,请使用 keyboard.up
.
按下该键之后,对keyboard.down
的后续调用将repeat设置为true。要释放键,请使用keyboard.up
。
注意 修饰键会影响
keyboard.down
。按住Shift
将会以大写形式键入文本。
keyboard.press(key[, options])
key
<[string]> 要按下的键的名称,例如ArrowLeft
。有关所有键名的列表,请参见[USKeyboardLayout]。options
<[Object]>text
<[string]> 如果指定,则使用此文本生成输入事件。delay
<[number]> 在keydown
和keyup
之间等待的时间,以毫秒为单位。预设为 0 。
- returns: <[Promise]>
如果key
是单个字符,并且除了按住Shift
之外没有其他修饰键的情况下,还会生成keypress
/input
事件。可以指定text
选项以强制生成输入事件。
注意 修饰键可以使
keyboard.press
。按住Shift
将会以大写形式键入文本。
keyboard.down
和keyboard.up
的快捷实现。
keyboard.sendCharacter(char)
char
<[string]> 要发送到页面的字符。- returns: <[Promise]>
调度keypress
和input
事件, 不会发送keydown
或keyup
事件。
page.keyboard.sendCharacter('嗨');
注意 修饰键不会影响
keyboard.sendCharacter
。按住Shift
不会以大写形式键入文本。keyboard.type(text[, options])
text
<[string]> 要键入到焦点元素中的文本。options
<[Object]>delay
<[number]>两次按键之间等待的时间,以毫秒为单位。预设为 0 。- returns: <[Promise]>
输入字符, 并产生 keydown
, keypress
/input
, 和 keyup
事件。
要按下特殊键,例如Control
或ArrowDown
, 请使用 keyboard.press
.
await page.keyboard.type('Hello'); // 立即输入
await page.keyboard.type('World', {delay: 100}); // 缓慢输入, 模拟用户
注意 组合键不会影响
keyboard.type
. 比如按住Shift
不会以大写形式输入文本。
keyboard.up(key)
key
<[string]> 要释放的键的名, 比如ArrowLeft
. 了解所有键名参阅 [USKeyboardLayout] 。- returns: <[Promise]>
派发一个 keyup
事件.
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。