# class:keyboard
### class: Keyboard v0.9.0
Keyboard 提供一個接口來管理虛擬鍵盤. 高級接口為 [`keyboard.type`](#?product=Puppeteer&version=v1.11.0&show=api-keyboardtypetext-options), 其接收原始字符, 然后在你的頁面上生成對應的 keydown, keypress/input, 和 keyup 事件.
為了更精細的控制(虛擬鍵盤), 你可以使用 [`keyboard.down`](#?product=Puppeteer&version=v1.11.0&show=api-keyboarddownkey-options), [`keyboard.up`](#?product=Puppeteer&version=v1.11.0&show=api-keyboardupkey) 和 [`keyboard.sendCharacter`](#?product=Puppeteer&version=v1.11.0&show=api-keyboardsendcharacterchar) 來手動觸發事件, 就好像這些事件是由真實的鍵盤生成的.
持續按下 `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');// 結果字符串最終為 'Hello!'
```
按下 `A` 的例子:
```
await page.keyboard.down('Shift');await page.keyboard.press('KeyA');await page.keyboard.up('Shift');
```
> **注意** 在 MacOS 上, `? A` -> 選擇全部等鍵盤快捷鍵不工作. 另見 [\#1313](https://github.com/GoogleChrome/puppeteer/issues/1313)
#### Methods
- [keyboard.down(key\[, options\])](#?product=Puppeteer&version=v1.11.0&show=api-keyboarddownkey-options)v0.9.0
- [keyboard.press(key\[, options\])](#?product=Puppeteer&version=v1.11.0&show=api-keyboardpresskey-options)v0.9.0
- [keyboard.sendCharacter(char)](#?product=Puppeteer&version=v1.11.0&show=api-keyboardsendcharacterchar)v0.9.0
- [keyboard.type(text, options)](#?product=Puppeteer&version=v1.11.0&show=api-keyboardtypetext-options)v0.9.0
- [keyboard.up(key)](#?product=Puppeteer&version=v1.11.0&show=api-keyboardupkey)v0.9.0
### Methods
#### keyboard.down(key\[, options\])v0.9.0
- `key` <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> 按下的鍵名, 比如 `ArrowLeft`. 一個包含所有鍵名的列表見 [USKeyboardLayout](https://github.com/GoogleChrome/puppeteer/blob/master/docs/../lib/USKeyboardLayout.js "USKeyboardLayout").
- `options` <[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object "Object")> - `text` <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> 如果指定,則使用此文本生成輸入事件.
- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise "Promise")>
會分發一個 `keydown` 事件。
如果 `key` 是一個單獨字符并且沒有除了 `Shift` 的其他修飾符鍵正在被按下, 一個 `keypress`/`input` 事件也將被生成. 可以指定 `text` 選項來強制生成輸入事件。
如果 `key` 是一個修飾鍵, `Shift`, `Meta`, `Control`, 或者是 `Alt`, 隨后的按鍵將與該修飾符一起發送. 要釋放修飾鍵, 請使用 [`keyboard.up`](#?product=Puppeteer&version=v1.11.0&show=api-keyboardupkey)。
在鍵被按下一次之后(譯者注: 按下之后沒有被釋放, 一般會持續的觸發該按鍵), 隨后將持續調用 [`keyboard.down`](#?product=Puppeteer&version=v1.11.0&show=api-keyboarddownkey-options), 事件對象的 [repeat](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat) 將被設置為 true. 要釋放該鍵, 請使用 [`keyboard.up`](#?product=Puppeteer&version=v1.11.0&show=api-keyboardupkey).
> **注意** 修飾鍵會影響 `keyboard.down`, 持續按下 `Shift` 鍵將以大寫形式輸入文本。
#### keyboard.press(key\[, options\])v0.9.0
- `key` <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> 按下的鍵名, 比如 `ArrowLeft`. 一個包含所有鍵名的列表見 [USKeyboardLayout](https://github.com/GoogleChrome/puppeteer/blob/master/docs/../lib/USKeyboardLayout.js "USKeyboardLayout")。
- `options` <[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object "Object")> - `text` <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> 如果指定,則使用此文本生成輸入事件。 - `delay` <[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type "Number")> 在 `keydown` 和 `keyup` 間隔的時間, 以毫秒為單位. 默認為 0。
- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise "Promise")>
如果 `key` 是一個單獨字符并且沒有除了 `Shift` 的其他修飾符鍵正在被按下, 一個 `keypress`/`input` 事件也將被生成。可以指定 `text` 選項來強制生成輸入事件。
> **注意** 修飾鍵會影響 `keyboard.press`, 持續按下 `Shift` 鍵將已大寫形式輸入文本。
[`keyboard.down`](#?product=Puppeteer&version=v1.11.0&show=api-keyboarddownkey-options) 和 [`keyboard.up`](#?product=Puppeteer&version=v1.11.0&show=api-keyboardupkey) 的快捷方式。
#### keyboard.sendCharacter(char)v0.9.0
- `char` <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> 發送到頁面的字符。
- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise "Promise")>
分發一個 `keypress` 和 `input` 事件。該方法不會發送 `keydown` 或 `keyup` 事件。
```
page.keyboard.sendCharacter('嗨');
```
> **注意** 修飾鍵不會影響 `keyboard.sendCharacter`。持續按下 `Shift` 鍵將不會已大寫形式輸入文本。
#### keyboard.type(text, options)v0.9.0
- `text` <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> 要輸入到焦點元素中的文本。
- `options` <[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object "Object")> - `delay` <[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type "Number")> 按鍵間隔的時間, 以毫秒為單位. 默認為 0。
- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise "Promise")>
為文本中的每個字符發送一個`keydown`, `keypress`/`input` 和 `keyup` 事件。
要按下一個特別的鍵, 像 `Control` 或 `ArrowDown`. 請使用[`keyboard.press`](#?product=Puppeteer&version=v1.11.0&show=api-keyboardpresskey-options)
```
page.keyboard.type('Hello'); // 立即輸入page.keyboard.type('World', {delay: 100}); // 更緩慢的輸入, 像一個用戶
```
> **注意** 修飾鍵不會影響 `keyboard.type`。持續按下 `Shift` 鍵將不會已大寫形式輸入文本。
#### keyboard.up(key)v0.9.0
- `key` <[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type "String")> 要釋放的鍵的鍵名, 例如 `ArrowLeft`。一個包含所有鍵名的列表見 [USKeyboardLayout](https://github.com/GoogleChrome/puppeteer/blob/master/docs/../lib/USKeyboardLayout.js "USKeyboardLayout")。
- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise "Promise")>
分發一個 `keyup` 事件。

puppeteer.js中文網|class:keyboard
puppeteer.js中文文檔, puppeteer chrome, puppeteer firefox, puppeteer api 中文文檔
puppeteer.js中文網包含了Puppeteer中文文檔,最新資訊,應用案例等。Puppeteer 是一個 Node 庫,它提供了一個高級 API 來通過 DevTools 協議控制 Chromium 或 Chrome。
- Introduction
- 版本記錄
- 概要
- puppeteer-vs-puppeteer-core
- 環境變量
- error-handling
- working-with-chrome-extensions
- class:puppeteer
- class:browserfetcher
- class:browser
- class:page
- class:worker
- class:accessibility
- class:keyboard
- class:mouse
- class:touchscreen
- class:tracing
- class:dialog
- class:consolemessage
- class:frame
- class:executioncontext
- class:jshandle
- class:elementhandle
- class:request
- class:response
- class:securitydetails
- class:target
- class:cdpsession
- class:coverage
- class:timeouterror