跳到主要内容

Keyboard

Keyboard 提供用于管理虚拟键盘的 API。高级 API 是 Keyboard.TypeAsync(),它接受原始字符并在页面上生成正确的 keydownkeypress/inputkeyup 事件。

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

按住 Shift 以选择和删除一些文本的示例

await page.Keyboard.TypeAsync("Hello World!");
await page.Keyboard.PressAsync("ArrowLeft");

await page.Keyboard.DownAsync("Shift");
for (int i = 0; i < " World".Length; i++)
await page.Keyboard.PressAsync("ArrowLeft");

await page.Keyboard.UpAsync("Shift");

await page.Keyboard.PressAsync("Backspace");
// Result text will end up saying "Hello!"

按大写字母 A 的示例

await page.Keyboard.PressAsync("Shift+KeyA");
// or
await page.Keyboard.PressAsync("Shift+A");

使用键盘触发全选的示例

await page.Keyboard.PressAsync("ControlOrMeta+A");

方法

DownAsync

在 v1.9 版本之前添加 keyboard.DownAsync

派发 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 等。

还支持以下修饰符快捷方式:ShiftControlAltMetaShiftLeftControlOrMetaControlOrMeta 在 Windows 和 Linux 上解析为 Control,在 macOS 上解析为 Meta

按住 Shift 将输入与大写字母的 key 相对应的文本。

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

如果 key 是修饰键 ShiftMetaControlAlt,则后续按键将在该修饰符处于活动状态时发送。 要释放修饰键,请使用 Keyboard.UpAsync()

在键被按下一次后,后续对 Keyboard.DownAsync() 的调用将把 repeat 设置为 true。 要释放键,请使用 Keyboard.UpAsync()

注意

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

用法

await Keyboard.DownAsync(key);

参数

  • key string#

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

返回值


InsertTextAsync

在 v1.9 版本之前添加 keyboard.InsertTextAsync

仅派发 input 事件,不发出 keydownkeyupkeypress 事件。

用法

await page.Keyboard.PressAsync("嗨");
注意

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

参数

  • text string#

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

返回值


PressAsync

在 v1.9 版本之前添加 keyboard.PressAsync
提示

在大多数情况下,您应该使用 Locator.PressAsync() 代替。

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 等。

还支持以下修饰符快捷方式:ShiftControlAltMetaShiftLeftControlOrMetaControlOrMeta 在 Windows 和 Linux 上解析为 Control,在 macOS 上解析为 Meta

按住 Shift 将输入与大写字母的 key 相对应的文本。

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

也支持诸如 key: "Control+o"key: "Control++key: "Control+Shift+T" 之类的快捷方式。 当使用修饰符指定时,修饰符会被按下并保持,同时按下后续键。

用法

await page.GotoAsync("https://keycode.info");
await page.Keyboard.PressAsync("A");
await page.ScreenshotAsync(new() { Path = "A.png" });
await page.Keyboard.PressAsync("ArrowLeft");
await page.ScreenshotAsync(new() { Path = "ArrowLeft.png" });
await page.Keyboard.PressAsync("Shift+O");
await page.ScreenshotAsync(new() { Path = "O.png" });
await browser.CloseAsync();

Keyboard.DownAsync()Keyboard.UpAsync() 的快捷方式。

参数

  • key string#

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

  • options KeyboardPressOptions? (可选)

    • Delay [float]? (可选)#

      keydownkeyup 之间等待的时间,以毫秒为单位。 默认为 0。

返回值


TypeAsync

在 v1.9 版本之前添加 keyboard.TypeAsync
警告

在大多数情况下,您应该使用 Locator.FillAsync() 代替。 只有当页面上有特殊的键盘处理时,才需要逐个按键 - 在这种情况下,请使用 Locator.PressSequentiallyAsync()

为文本中的每个字符发送 keydownkeypress/inputkeyup 事件。

要按下特殊键,如 ControlArrowDown,请使用 Keyboard.PressAsync()

用法

await page.Keyboard.TypeAsync("Hello"); // types instantly
await page.Keyboard.TypeAsync("World", new() { Delay = 100 }); // types slower, like a user
注意

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

注意

对于不在美国键盘上的字符,只会发送 input 事件。

参数

  • text string#

    要键入到焦点元素中的文本。

  • options KeyboardTypeOptions? (可选)

    • Delay [float]? (可选)#

      按键之间等待的时间,以毫秒为单位。 默认为 0。

返回值


UpAsync

在 v1.9 版本之前添加 keyboard.UpAsync

派发 keyup 事件。

用法

await Keyboard.UpAsync(key);

参数

  • key string#

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

返回值