Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

194
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!