# 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` 事件。
![](images/pptr.png)
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