跳到主内容

Keyboard

Keyboard 提供了一个用于管理虚拟键盘的 API。高级 API 是 keyboard.type(),它接收原始字符并在您的页面上生成适当的 keydown, keypress/inputkeyup 事件。

为了更精细的控制,您可以使用 keyboard.down()keyboard.up()keyboard.insertText() 来手动触发事件,就像它们是由真实键盘生成的一样。

按住 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');
// Result text will end up saying 'Hello!'

按大写 A 的示例

await page.keyboard.press('Shift+KeyA');
// or
await page.keyboard.press('Shift+A');

使用键盘触发全选的示例

await page.keyboard.press('ControlOrMeta+A');

方法

down

在 v1.9 之前添加 keyboard.down

触发一个 keydown 事件。

key 可以指定预期的 keyboardEvent.key 值或一个用于生成文本的单个字符。key 值的超集可以在此处找到。按键示例包括:

F1 - F12, Digit0- Digit9, KeyA- KeyZ, Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape, ArrowDown, End, Enter, Home, Insert, PageDown, PageUp, ArrowRight, ArrowUp 等。

还支持以下修饰键快捷方式:Shift, Control, Alt, Meta, ShiftLeft, ControlOrMeta。在 Windows 和 Linux 上 ControlOrMeta 解析为 Control,在 macOS 上解析为 Meta

按住 Shift 键将以大写形式输入与 key 对应的文本。

如果 key 是单个字符,则区分大小写,因此值 aA 将生成不同的相应文本。

如果 key 是修饰键(Shift, Meta, ControlAlt),后续按键事件将附带该修饰键处于活动状态。要释放修饰键,请使用 keyboard.up()

按键按下一次后,后续调用 keyboard.down() 将把 repeat 设置为 true。要释放按键,请使用 keyboard.up()

注意

修饰键确实会影响 keyboard.down。按住 Shift 键将以大写形式输入文本。

用法

await keyboard.down(key);

参数

  • key string#

    要按下的键的名称或要生成的字符,例如 ArrowLefta

返回值


insertText

在 v1.9 之前添加 keyboard.insertText

仅触发 input 事件,不触发 keydown, keyupkeypress 事件。

用法

page.keyboard.insertText('嗨');
注意

修饰键不会影响 keyboard.insertText。按住 Shift 键不会以大写形式输入文本。

参数

  • text string#

    将输入设置为指定的文本值。

返回值


press

在 v1.9 之前添加 keyboard.press
提示

在大多数情况下,您应该使用 locator.press()

key 可以指定预期的 keyboardEvent.key 值或一个用于生成文本的单个字符。key 值的超集可以在此处找到。按键示例包括:

F1 - F12, Digit0- Digit9, KeyA- KeyZ, Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape, ArrowDown, End, Enter, Home, Insert, PageDown, PageUp, ArrowRight, ArrowUp 等。

还支持以下修饰键快捷方式:Shift, Control, Alt, Meta, ShiftLeft, ControlOrMeta。在 Windows 和 Linux 上 ControlOrMeta 解析为 Control,在 macOS 上解析为 Meta

按住 Shift 键将以大写形式输入与 key 对应的文本。

如果 key 是单个字符,则区分大小写,因此值 aA 将生成不同的相应文本。

还支持诸如 key: "Control+o", key: "Control++key: "Control+Shift+T" 之类的快捷键。当指定修饰键时,修饰键将在后续按键被按下时被按下并保持。

用法

const page = await browser.newPage();
await page.goto('https://keycode.info');
await page.keyboard.press('A');
await page.screenshot({ path: 'A.png' });
await page.keyboard.press('ArrowLeft');
await page.screenshot({ path: 'ArrowLeft.png' });
await page.keyboard.press('Shift+O');
await page.screenshot({ path: 'O.png' });
await browser.close();

keyboard.down()keyboard.up() 的快捷方式。

参数

  • key string#

    要按下的键的名称或要生成的字符,例如 ArrowLefta

  • options Object (可选)

    • delay number (可选)#

      keydownkeyup 之间的等待时间(毫秒)。默认为 0。

返回值


type

在 v1.9 之前添加 keyboard.type
注意

在大多数情况下,您应该使用 locator.fill()。只有当页面上有特殊的键盘处理时,才需要一个接一个地按键 - 在这种情况下请使用 locator.pressSequentially()

为文本中的每个字符发送一个 keydown, keypress/inputkeyup 事件。

要按下 ControlArrowDown 等特殊键,请使用 keyboard.press()

用法

await page.keyboard.type('Hello'); // Types instantly
await page.keyboard.type('World', { delay: 100 }); // Types slower, like a user
注意

修饰键不会影响 keyboard.type。按住 Shift 键不会以大写形式输入文本。

注意

对于非美式键盘上的字符,将仅发送 input 事件。

参数

  • text string#

    要输入到获得焦点的元素的文本。

  • options Object (可选)

    • delay number (可选)#

      按键之间的等待时间(毫秒)。默认为 0。

返回值


up

在 v1.9 之前添加 keyboard.up

触发一个 keyup 事件。

用法

await keyboard.up(key);

参数

  • key string#

    要按下的键的名称或要生成的字符,例如 ArrowLefta

返回值