Files
fn_registry/functions/browser/cdp_select_option.md
T
Egutierrez 9798aed2cf feat(browser): cdp_collect_console + cdp_print_pdf + cdp_select_option + cdp_set_file_input
Cuatro primitivas CDP nuevas para el dominio browser, base de nuevas tools del
browser_mcp:
- cdp_collect_console: snapshot temporal de console + exceptions + log entries
- cdp_print_pdf: Page.printToPDF -> []byte
- cdp_select_option: selecciona <option> en un <select> y dispara input/change
- cdp_set_file_input: sube archivos a un <input type=file> via DOM.setFileInputFiles

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 20:21:46 +02:00

3.0 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, 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 output tested tests test_file_path file_path
cdp_select_option function go browser 1.0.0 impure func CdpSelectOption(c *CDPConn, selector string, value string) error Selecciona la <option> de un <select> (localizado por selector CSS) cuyo value coincide con el valor dado; si ningun value coincide, busca por texto visible de la option. Tras setear select.value despacha los eventos 'input' y 'change' con bubbles:true para que frameworks (React/Vue) reaccionen al cambio. Via Runtime.evaluate, reusa CdpEvaluate.
chrome
cdp
browser
automation
select
dropdown
form
dom
devtools
cdp_evaluate_go_browser
false error_go_core
fmt
strings
name desc
c conexión CDP activa
name desc
selector selector CSS del elemento <select> a modificar
name desc
value value de la <option> a seleccionar; si no hay match por value, se busca por texto visible (textContent trimeado)
error si el select no existe ("select not found") o ninguna option coincide por value ni por texto ("option not found"); nil si la selección y los eventos se despacharon correctamente false
functions/browser/cdp_select_option.go

Ejemplo

conn, _ := CdpConnect(9222)
CdpNavigate(conn, "https://example.com/form")

// Seleccionar por value
if err := CdpSelectOption(conn, "#country", "ES"); err != nil {
    log.Fatal(err)
}

// Seleccionar por texto visible cuando no se conoce el value interno
if err := CdpSelectOption(conn, "select[name=lang]", "Español"); err != nil {
    log.Fatal(err)
}

Cuando usarla

Usala cuando necesites elegir una opcion de un <select> nativo en un formulario web y quieras que un framework (React, Vue, Angular) reaccione al cambio. Es la forma robusta de rellenar dropdowns durante automatizacion/scraping: a diferencia de un click sobre la option, setea select.value y dispara input+change, que es lo que los frameworks escuchan. Combinala con CdpClick para enviar el formulario despues.

Gotchas

  • Solo funciona con <select> nativos (HTML). Dropdowns custom hechos con <div>
    • JS (ej. react-select, headlessui) NO son <select> reales: para esos hay que clickar y elegir la opcion del menu desplegado, no usar esta funcion.
  • El match por value es exacto (===); el fallback por texto compara textContent trimeado de forma exacta tras .trim() (no substring, no case-insensitive).
  • No hace scroll ni verifica visibilidad: opera sobre el DOM directamente. Si el <select> esta deshabilitado (disabled), el value se setea igual pero la UI puede ignorarlo segun el framework.
  • Para <select multiple> solo selecciona una opcion (la que coincide) y resetea el resto, porque setea select.value (no añade a selectedOptions).
  • Si el elemento aun no existe (carga dinamica), retorna "select not found" sin esperar — combinar con CdpWaitElement para elementos diferidos.