Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

204
Vistas
Firefox (geckodriver): ¿Cómo inyecto funciones de JavaScript en una página para que persistan al regresar de 'executeScript'?

Tengo una biblioteca de Selenium Java que incluye una biblioteca de "pegamento" de JavaScript que permite que las funciones de JavaScript generen excepciones serializadas de Java. Esto permite un manejo mucho más natural de condiciones excepcionales sin mucho repetitivo.

Antes de ejecutar una secuencia de comandos que puede querer lanzar una excepción, inyecto esta biblioteca en la página de destino en un cierre a través executeScript . Al regresar, las funciones definidas en el cierre persisten en la página, disponibles para los scripts que se ejecutan después para usar para lanzar excepciones.

Esta técnica funciona como se esperaba en HtmlUnit, Chrome y Edge. Sin embargo, las funciones adjuntas no persisten cuando uso esta técnica en Firefox. Si pego el cierre en el editor de varias líneas en Developer Tools, las funciones se conservan, pero esta no es una estrategia que pueda usar en la automatización de Selenium Java.

¿Hay algún método diferente que pueda usar para agregar funciones a una página web sobre la marcha? ¿Hay una configuración de Firefox que pueda permitir que la técnica que estoy usando funcione como se esperaba?

La fuente del script que estoy usando ahora se puede encontrar aquí: https://github.com/sbabcoc/Selenium-Foundation/blob/master/src/main/resources/javaGlueLib.js Como se indica en los comentarios, la estructura y la funcionalidad de "espacio de nombres" del cierre se obtuvo de aquí: https://github.com/jweir/namespace/blob/master/namespace.js

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Encontré mi respuesta. Siempre supe que mi implementación original estaba dibujando fuera de las líneas, y Firefox no me deja salirme con la mía.

La solución es crear un elemento de secuencia de script , establecer el [textContent] de este elemento en mi fuente de secuencia de comandos original y adjuntar este nuevo nodo de secuencia de script al elemento head de mi página de destino.

 var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.textContent = arguments[0]; head.appendChild(script);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Esto puede ser una limitación del propio Firefox. Pero solo estoy suponiendo.

¿Has probado un proxy Man in the Middle? como https://mitmproxy.org

Deberá estar en un entorno en el que sus navegadores de prueba puedan confiar en el certificado MITM. Luego puede configurar el servidor MITM para inyectar lo que quiera en las solicitudes.

La ventaja de un MITM es que será independiente del navegador.

Otra opción podría ser usar GreaseMonkey para Firefox. https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda