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

153
Vistas
¿Por qué mis polyfills no se cargan correctamente en webdriver Firefox?

Tengo este polyfill en JS para mi sitio:

 if (!Date.prototype.toSQLDate) { console.log('Adding my custom polyfill'); Date.prototype.toSQLDate = function () { // relevant code snipped, but assume: // return some string like '2000-01-01'; } }

Cuando cargo el sitio web manualmente, veo el registro de la consola y puedo hacer:

 var x = new Date(2000, 0, 1); console.log(x.toSQLDate()) => '2000-01-01'

Esto funciona tanto en Chrome/Chromium(96) como en Firefox(95+)

Sin embargo, cuando ejecuto mis pruebas automatizadas en este sitio web, solo en Firefox (95) (Chrome funciona bien) obtengo esto cuando intento ejecutar el mismo código a través de webdriver.execute_script

 from selenium import webdriver wd = webdriver.Firefox() wd.get(...myurl) wd.execute_script('var x = new Date(2000, 0, 1); return x.toSQLDate()') >>>> selenium.common.exceptions.JavascriptException: Message: TypeError: x.toSQLDate is not a function

¿Qué? Si observo la prueba automatizada con la consola abierta, puedo ver mi archivo console.log que me dice que agregó correctamente el polyfill. Puedo interactuar con el navegador en la consola y hacer exactamente la misma lógica y recuperar una cadena válida. Pero cuando webdriver lo ejecuta, ¿no está en el mismo contexto js? Y solo en Firefox.

Este comportamiento está presente tanto en Python2.7/selenium3 como en Python3.8/selenium4

¿Que esta pasando aqui? ¿Necesito habilitar algún tipo de escape sandbox js en Firefox?

Información Adicional:

Parece que puede haber alguna "peculiaridad" en la forma en que firefox/geckodriver trata los globales. Considere este simple script:

 from selenium import webdriver ff = webdriver.Firefox() ff.get('http://www.google.com') ff.execute_script('return Date === window.Date') => False ff.execute_script('console.log(Date === window.Date)') => false # But this same script shows true for chrome.
about 4 years ago · Juan Pablo Isaza
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