5b10b419a2
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
68 lines
2.6 KiB
Markdown
68 lines
2.6 KiB
Markdown
---
|
|
id: cdp_press_key_go_browser
|
|
name: cdp_press_key
|
|
kind: function
|
|
lang: go
|
|
domain: browser
|
|
purity: impure
|
|
version: 1.0.0
|
|
tested: false
|
|
tests: []
|
|
test_file_path: ""
|
|
description: "Pulsa una tecla especial por nombre via Input.dispatchKeyEvent CDP (Enter, Tab, Escape, flechas, etc.) sobre el elemento con foco activo."
|
|
tags: [cdp, browser, input, keyboard, navegator]
|
|
signature: "func CdpPressKey(c *CDPConn, keyName string) error"
|
|
uses_functions: []
|
|
uses_types: []
|
|
returns: []
|
|
returns_optional: false
|
|
error_type: error_go_core
|
|
imports: []
|
|
file_path: "functions/browser/cdp_press_key.go"
|
|
example: |
|
|
// Enfocar un input y pulsar Enter para enviar el formulario
|
|
_ = CdpClick(c, "input[name='q']")
|
|
_ = CdpTypeText(c, "golang")
|
|
_ = CdpPressKey(c, "Enter")
|
|
params:
|
|
- name: c
|
|
desc: "Conexion CDP activa obtenida con CdpConnect."
|
|
- name: keyName
|
|
desc: "Nombre de la tecla a pulsar. Valores soportados: Enter, Tab, Escape, Backspace, Delete, ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Home, End, PageUp, PageDown, Space."
|
|
output: "nil si la tecla se despacho correctamente. Error si la conexion es nula, la tecla no esta en la tabla soportada, o CDP rechaza el evento."
|
|
---
|
|
|
|
## Ejemplo
|
|
|
|
```go
|
|
conn, _ := CdpConnect(9222)
|
|
|
|
// Enfocar campo de busqueda, escribir y enviar con Enter
|
|
_ = CdpClick(conn, "input[name='q']")
|
|
_ = CdpTypeText(conn, "golang generics")
|
|
if err := CdpPressKey(conn, "Enter"); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
// Navegar en un desplegable con flechas
|
|
_ = CdpClick(conn, "#dropdown")
|
|
_ = CdpPressKey(conn, "ArrowDown")
|
|
_ = CdpPressKey(conn, "ArrowDown")
|
|
_ = CdpPressKey(conn, "Enter")
|
|
|
|
// Cerrar un modal con Escape
|
|
_ = CdpPressKey(conn, "Escape")
|
|
```
|
|
|
|
## Cuando usarla
|
|
|
|
Usar cuando necesites simular pulsaciones de teclas especiales sobre el elemento con foco: enviar formularios con Enter, navegar opciones con flechas, limpiar campos con Backspace/Delete, cerrar modales con Escape, o desplazarse con PageUp/PageDown. Para escribir texto normal usa CdpTypeText.
|
|
|
|
## Gotchas
|
|
|
|
- La tecla actua sobre el elemento con foco activo. Llama a CdpClick primero para enfocar el elemento objetivo.
|
|
- Teclas sin caracter imprimible (Tab, Escape, flechas, Home, End, PageUp, PageDown) no envian el campo "text" — Chrome lo requiere asi para distinguir navegacion de insercion.
|
|
- Enter envia `text: "\r"` que es lo que Chrome espera para confirmar formularios y autocompletados.
|
|
- Space envia `key: " "` y `text: " "` — funciona como barra espaciadora y como insercion de espacio en inputs.
|
|
- Si la tecla que necesitas no esta en la tabla, la funcion retorna error explicito en vez de silencio.
|