029dbf57bd
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.4 KiB
2.4 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, params, output, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | tested | tests | test_file_path | params | output | file_path | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cdp_click_ref | function | go | browser | 1.0.0 | impure | func CdpClickRef(c *CDPConn, backendNodeID int, opts MouseHumanOpts) error | Click humanizado (Bézier + jitter) sobre el elemento identificado por su #ref del AX outline. El #ref es el backendDOMNodeId estable del nodo DOM. Hace scroll al elemento si no está en viewport antes de calcular las coordenadas vía DOM.getBoxModel. |
|
|
false | error_go_core | false |
|
nil si el click se completó; error si la conexión es nil, el nodo no tiene boxModel visible, o el click CDP falla. | functions/browser/cdp_click_ref.go |
Ejemplo
// Tras un page_perceive que devuelve outline con #ref=1234:
conn, _ := CdpConnect(9222)
err := CdpClickRef(conn, 1234, MouseHumanOpts{})
if err != nil {
log.Fatal(err)
}
Cuando usarla
Tras page_perceive / render_ax_outline, cuando el agente tiene el #ref de un elemento del outline y quiere hacer click sobre él sin necesitar un selector CSS — cierra el bucle percibir→actuar. Preferir sobre CdpClickHuman cuando el nodo viene del AX outline (más estable que un selector).
Gotchas
- El
#refes un backendDOMNodeId, no el nodeId efímero del AX tree. Si la página recargó o navegó tras el snapshot, el ref puede estar muerto — re-percibir antes de actuar. DOM.getBoxModelfalla si el elemento no está en el DOM renderizado (display:none, fuera del shadow DOM accesible, o ya eliminado). El error describe la causa.DOM.scrollIntoViewIfNeededse invoca antes del cálculo de coordenadas pero su fallo se ignora (no fatal) — si el elemento no es scrollable al viewport el click puede caer en coordenadas incorrectas.- El click va por
CdpClickXYHuman(Bézier): no despachesInput.dispatchMouseEventcrudo en código que use esta función.