8742cb25be
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.3 KiB
4.3 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params_schema, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | params_schema | tested | tests | test_file_path | file_path | ||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cdp_press_key | function | py | browser | 1.0.0 | impure | def cdp_press_key(key: str, *, port: int = 9222, target_url_substr: str = '', modifiers: int = 0, timeout_s: float = 10.0) -> dict | Pulsa una tecla nombrada (Enter, Escape, Backspace, Tab, ArrowDown, Delete, ...) sobre el elemento enfocado de una pestana de un Chrome con remote debugging, via CDP Input.dispatchKeyEvent (rawKeyDown + keyUp). Primitiva de input CDP reutilizable: enviar mensajes (Enter en el composer de WhatsApp), cerrar overlays (Escape), navegar resultados (ArrowDown), borrar (Backspace) o combos con modificadores (Ctrl+A). |
|
false | error_go_core |
|
|
true |
|
python/functions/browser/cdp_press_key_test.py | python/functions/browser/cdp_press_key.py |
Ejemplo
import sys, os
sys.path.insert(0, os.path.join("python", "functions"))
from browser.cdp_press_key import cdp_press_key
# Requiere un Chrome lanzado con --remote-debugging-port=9222
# y una pestana de WhatsApp Web abierta con el composer enfocado y texto escrito.
res = cdp_press_key("Enter", target_url_substr="whatsapp") # envia el mensaje
print(res["ok"], res["error"])
# Combo con modificadores (Ctrl+A para seleccionar todo): Ctrl=2.
cdp_press_key("Home", target_url_substr="whatsapp", modifiers=2)
O directo por CLI: python3 python/functions/browser/cdp_press_key.py "Enter" "whatsapp".
Cuando usarla
Cuando necesites enviar una pulsacion de tecla sobre la pestana ya abierta del
navegador diario sin abrir ventana nueva ni darle foco al sistema: Enter para
enviar (composer de WhatsApp), Escape para cerrar overlays/dialogos,
ArrowDown/ArrowUp para navegar resultados de busqueda, Backspace/Delete para
borrar, o combos con modifiers (Ctrl/Shift/Alt/Meta). Tipicamente despues de
escribir con cdp_type_chars_py_browser para confirmar la accion. Es la primitiva de
input sobre la que se construyen funciones whatsapp_*_py_browser y cualquier script
que opere una pestana existente via CDP.
Gotchas
- Actua sobre el elemento enfocado de la pagina: CDP
Input.dispatchKeyEventno apunta a un selector, va al foco actual. Asegura el foco (clic oel.focus()viacdp_eval_py_browser) antes de pulsar. - Enter en WhatsApp Web envia el mensaje (no inserta salto de linea). Para newline
dentro del composer usa Shift+Enter (
modifiers=8) o no uses esta funcion para eso. modifierses el bitmask de CDP, no un string: Alt=1, Ctrl=2, Meta/Cmd=4, Shift=8; combina con OR (ej. Ctrl+Shift = 10).- No se emite evento
charaparte: el parrawKeyDown+keyUpcon elwindowsVirtualKeyCodecorrecto (Enter=13) basta para disparar el envio en WhatsApp (validado viapress_keydel MCP del navegador). - Requiere un Chrome lanzado con
--remote-debugging-port=9222(o el puerto que pases). Sin remote debugging,GET /jsonfalla y devuelveok=False. - Nunca lanza: errores de red, conexion WS, transport o tecla no soportada se reportan
en el campo
errorconok=False.