--- 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.