跳到主要內容

Keyboard

Keyboard 提供用於管理虛擬鍵盤的 API。高階 API 是 keyboard.type(),它會接收原始字元,並在您的頁面上產生適當的 keydownkeypress/inputkeyup 事件。

若要進行更精細的控制,您可以使用 keyboard.down()keyboard.up()keyboard.insert_text() 來手動觸發事件,就像它們是由真實鍵盤產生的一樣。

以下範例說明如何按住 Shift 鍵以選取和刪除一些文字

page.keyboard.type("Hello World!")
page.keyboard.press("ArrowLeft")
page.keyboard.down("Shift")
for i in range(6):
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 str#

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

傳回


insert_text

在 v1.9 之前新增 keyboard.insert_text

僅分派 input 事件,不會發出 keydownkeyupkeypress 事件。

用法

page.keyboard.insert_text("嗨")
注意

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

引數

  • text str#

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

傳回


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 = browser.new_page()
page.goto("https://keycode.info")
page.keyboard.press("a")
page.screenshot(path="a.png")
page.keyboard.press("ArrowLeft")
page.screenshot(path="arrow_left.png")
page.keyboard.press("Shift+O")
page.screenshot(path="o.png")
browser.close()

用於 keyboard.down()keyboard.up() 的快速鍵。

引數

  • key str#

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

  • delay float (選用)#

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

傳回


type

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

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

針對文字中的每個字元傳送 keydownkeypress/inputkeyup 事件。

若要按下特殊按鍵,例如 ControlArrowDown,請使用 keyboard.press()

用法

page.keyboard.type("Hello") # types instantly
page.keyboard.type("World", delay=100) # types slower, like a user
注意

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

注意

對於不在美式鍵盤上的字元,只會傳送 input 事件。

引數

  • text str#

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

  • delay float (選用)#

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

傳回


up

在 v1.9 之前新增 keyboard.up

分派 keyup 事件。

用法

keyboard.up(key)

引數

  • key str#

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

傳回