No pude encontrar todas las piezas que responden a mi pregunta, así que lo siento si esta pregunta está duplicada.
Estoy trabajando con Go y Chromedp, y mi desafío es desplazar el elemento en el iframe a algún lugar visible.
Desafortunadamente, el espacio del iframe es muy reducido en la página, por lo que muchas entradas y botones están ocultos detrás de la página principal y el comando Click de chromedp no funciona como se esperaba porque hace clic en la página principal donde se encuentra el elemento del iframe.
La solución que he usado hasta hace poco fue ubicar el elemento como un elemento regular como chromedp.Nodes("iframe", chromedp.ByQuery)} y ejecutar element.scrollIntoView() JS a través chromedp.EvaluateAsDevTools() pero esta solución comenzó recientemente fallando con mensaje de error
Reason: exception "Uncaught" (1:4): TypeError: Cannot read properties of undefined (reading 'scrollIntoView') at <anonymous>:2:5 at <anonymous>:3:4 Después de investigar al respecto, descubrí que la razón es que JS se ejecuta en el contexto del navegador principal en lugar del iframe, y Chrome no permite que la página html principal acceda al html de iframe, incluso cuando se ejecuta Chrome con --disable-web-security .
Entonces, ahora estoy tratando de crear un nuevo contexto de chromedp que apunte al iframe en lugar del navegador principal con la esperanza de que permita ejecutar el comando JS mencionado anteriormente.
Parece que chromedp no está agregando un nuevo objetivo para el iframe, por lo que el código ya no encuentra el objetivo del iframe.
Para encontrar el objetivo del iframe, lo hago de la siguiente manera:
var tgt *target.Info targets, _ := chromedp.Targets(testContext) for _, t := range targets { if t.Type == "iframe" && strings.Contains(t.URL, targetUrl) { tgt = t break } }¿Podría alguien darme una pista sobre cómo podría solucionar mi problema? Gracias por adelantado