跳到主要內容

Keyboard

鍵盤提供用於管理虛擬鍵盤的 API。高階 API 是 keyboard.type(),它接受原始字元,並在您的頁面上產生適當的 keydownkeypress/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 - 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 鍵將以大寫輸入文字。

用法

await 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" 之類的捷徑。當使用修飾鍵指定時,修飾鍵會被按下並在隨後的按鍵被按下時保持按住狀態。

用法

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 字串#

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

  • options 物件 (選用)

    • delay 數字 (選用)#

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

傳回


type

在 v1.9 之前新增 keyboard.type
注意

在大多數情況下,您應該改用 locator.fill()。只有在頁面上有特殊的鍵盤處理時,才需要逐個按下按鍵 - 在這種情況下,請使用 locator.pressSequentially()

為文字中的每個字元發送 keydownkeypress/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 字串#

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

  • options 物件 (選用)

    • delay 數字 (選用)#

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

傳回


up

在 v1.9 之前新增 keyboard.up

發送 keyup 事件。

用法

await keyboard.up(key);

引數

  • key 字串#

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

傳回