跳到主要内容

Keyboard

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

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

一个关于按住 Shift 键以选择和删除一些文本的例子

page.keyboard().type("Hello World!");
page.keyboard().press("ArrowLeft");
page.keyboard().down("Shift");
for (int i = 0; i < " World".length(); i++)
page.keyboard().press("ArrowLeft");
page.keyboard().up("Shift");
page.keyboard().press("Backspace");
// Result text will end up saying "Hello!"

一个关于按下大写 A 的例子

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

一个关于使用键盘触发全选的例子

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

还支持以下修改快捷键:ShiftControlAltMetaShiftLeftControlOrMetaControlOrMeta 在 Windows 和 Linux 上解析为 Control,在 macOS 上解析为 Meta

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

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

如果 key 是修饰键 ShiftMetaControlAlt,则后续按键将以该修饰键激活状态发送。 要释放修饰键,请使用 Keyboard.up()

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

注意

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

用法

Keyboard.down(key);

参数

  • key String#

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

返回


insertText

在 v1.9 之前添加 keyboard.insertText

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

用法

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

还支持以下修改快捷键:ShiftControlAltMetaShiftLeftControlOrMetaControlOrMeta 在 Windows 和 Linux 上解析为 Control,在 macOS 上解析为 Meta

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

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

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

用法

Page page = browser.newPage();
page.navigate("https://keycode.info");
page.keyboard().press("A");
page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("A.png")));
page.keyboard().press("ArrowLeft");
page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("ArrowLeft.png")));
page.keyboard().press("Shift+O");
page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("O.png")));
browser.close();

用于 Keyboard.down()Keyboard.up() 的快捷方式。

参数

  • key String#

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

  • options Keyboard.PressOptions (可选)

    • setDelay double (可选)#

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

返回


type

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

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

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

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

用法

// Types instantly
page.keyboard().type("Hello");
// Types slower, like a user
page.keyboard().type("World", new Keyboard.TypeOptions().setDelay(100));
注意

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

注意

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

参数

  • text String#

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

  • options Keyboard.TypeOptions (可选)

    • setDelay double (可选)#

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

返回


up

在 v1.9 之前添加 keyboard.up

触发一个 keyup 事件。

用法

Keyboard.up(key);

参数

  • key String#

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

返回