跳到主要內容

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 - F12Digit0- Digit9KeyA- KeyZBackquoteMinusEqualBackslashBackspaceTabDeleteEscapeArrowDownEndEnterHomeInsertPageDownPageUpArrowRightArrowUp 等。

也支援以下修改快捷鍵: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 字串#

    要按下的按鍵名稱或要產生的字元,例如 ArrowLefta

傳回


insertText

在 v1.9 之前新增 keyboard.insertText

僅發送 input 事件,不發出 keydownkeyupkeypress 事件。

用法

page.keyboard().insertText("嗨");
請注意

修飾鍵不會影響 keyboard.insertText。按住 Shift 鍵不會輸入大寫文字。

引數

  • text 字串#

    將輸入設定為指定的文字值。

傳回


press

在 v1.9 之前新增 keyboard.press
提示

在大多數情況下,您應該改用 Locator.press()

key 可以指定預期的 keyboardEvent.key 值,或指定單一字元以產生文字。您可以在此處找到 key 值的超集。按鍵範例包括

F1 - F12Digit0- Digit9KeyA- KeyZBackquoteMinusEqualBackslashBackspaceTabDeleteEscapeArrowDownEndEnterHomeInsertPageDownPageUpArrowRightArrowUp 等。

也支援以下修改快捷鍵: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 字串#

    要按下的按鍵名稱或要產生的字元,例如 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 字串#

    要輸入到焦點元素中的文字。

  • options Keyboard.TypeOptions (選用)

    • setDelay double (選用)#

      按鍵之間等待的時間,以毫秒為單位。預設為 0。

傳回


up

在 v1.9 之前新增 keyboard.up

發送 keyup 事件。

用法

Keyboard.up(key);

引數

  • key 字串#

    要按下的按鍵名稱或要產生的字元,例如 ArrowLefta

傳回