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

162
Views
¿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
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!