5b10b419a2
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.6 KiB
2.6 KiB
id, name, kind, lang, domain, purity, version, tested, tests, test_file_path, description, tags, signature, uses_functions, uses_types, returns, returns_optional, error_type, imports, file_path, example, params, output
| id | name | kind | lang | domain | purity | version | tested | tests | test_file_path | description | tags | signature | uses_functions | uses_types | returns | returns_optional | error_type | imports | file_path | example | params | output | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cdp_scroll_go_browser | cdp_scroll | function | go | browser | impure | 1.0.0 | false | Desplaza la pagina via rueda del raton con Input.dispatchMouseEvent type mouseWheel; imprescindible para scroll infinito en SPAs. |
|
func CdpScroll(c *CDPConn, deltaX, deltaY float64) error | false | error_go_core | functions/browser/cdp_scroll.go | // Scroll hacia abajo 800px en una SPA con feed infinito for i := 0; i < 5; i++ { _ = CdpScroll(c, 0, 800) _ = CdpWaitIdle(c, 1500) } |
|
nil si el evento de scroll se despacho correctamente. Error si la conexion es nula o CDP rechaza el evento. |
Ejemplo
conn, _ := CdpConnect(9222)
_ = CdpNavigate(conn, "https://news.ycombinator.com")
_ = CdpWaitLoad(conn, 3000)
// Scroll hacia abajo en 5 pasos con pausa entre cada uno
for i := 0; i < 5; i++ {
if err := CdpScroll(conn, 0, 600); err != nil {
log.Fatal(err)
}
// Esperar que la SPA cargue nuevo contenido
_ = CdpWaitIdle(conn, 1500)
}
// Volver al inicio
_ = CdpScroll(conn, 0, -99999)
Cuando usarla
Usar para cargar contenido de scroll infinito en SPAs (Twitter, LinkedIn, feeds), para desplazarse hasta elementos fuera del viewport antes de interactuar con ellos, o para simular lectura humana de una pagina. Combinar con CdpWaitIdle entre scrolls para dar tiempo a que el framework cargue nuevo contenido.
Gotchas
- El evento se despacha en las coordenadas fijas (100, 100) del viewport. Si la pagina tiene un panel lateral o header que ocupa esa zona, el scroll puede no afectar al contenedor principal. En ese caso, evaluar
window.scrollBy(deltaX, deltaY)via CdpEvaluate como alternativa. - deltaY positivo = hacia abajo (igual que WheelEvent nativo del navegador).
- Para SPAs con scroll infinito es imprescindible llamar CdpWaitIdle despues de cada CdpScroll; sin la pausa, los scrolls consecutivos llegan antes de que el framework procese el primero.
- No hay garantia de que el scroll llegue al valor exacto de deltaY: el navegador puede aplicar aceleracion o limitar el desplazamiento al final del contenido.