51 votes

Selenium::WebDriver::Error::JavascriptError : l'attente du chargement de evaluate.js a échoué Firefox 23

Aujourd'hui, en exécutant mes tests rspec, j'obtiens l'erreur suivante à chaque fois que quelque part dans un test il y a un appel à `page.execute_script'.

 Selenium::WebDriver::Error::JavascriptError:
   waiting for evaluate.js load failed
 # [remote server] file:///tmp/webdriver-profile20130807-3105-fpynb7/extensions/fxdriver@googlecode.com/components/driver_component.js:8360:in `r'
 # [remote server] file:///tmp/webdriver-profile20130807-3105-fpynb7/extensions/fxdriver@googlecode.com/components/driver_component.js:392:in `fxdriver.Timer.prototype.runWhenTrue/g'
 # [remote server] file:///tmp/webdriver-profile20130807-3105-fpynb7/extensions/fxdriver@googlecode.com/components/driver_component.js:386:in `fxdriver.Timer.prototype.setTimeout/<.notify'

Il y a un fichier evaluate.js dans le répertoire /resources (au lieu de components) du chemin ci-dessus, comme c'est le cas sur d'autres machines.

Cela s'est produit après la mise à jour de Firefox 23 à partir de 22. Je n'ai pas encore pu revenir en arrière pour confirmer que le retour à 22 corrige effectivement le problème, mais c'est tout ce qui a changé je crois.

Quelqu'un d'autre a-t-il rencontré ce problème ?

Kubuntu 12.04, Capybara 1.1.4, selenium-webdriver gem 2.33.0

J'ai essayé de mettre à jour Capybara vers 2.whatever et selenium-webdriver vers 2.34.0, aucun changement.

85voto

dmtri.com Points 4910

J'ai eu le même problème sur Mac OS X Lion avec FF 23.

Mais le problème a disparu lorsque j'ai mis à jour selenium-webdriver vers la version 2.34.0.

J'ai ajouté gem "selenium-webdriver", "~> 2.34.0" dans mon fichier Gemfile.

bundle update selenium-webdriver

bundle install

Cucumber fonctionne bien avec Selenium maintenant.

4voto

drinor Points 730

J'ai mis à jour mes pierres précieuses :

gem 'capybara',             '~> 2.1.0'
gem 'selenium-webdriver',   '~> 2.35.1'

Cela a fonctionné pour moi.

Mise à jour :

Capybara 2.1.0 m'a posé un problème avec Phantomjs et finalement j'utilise la version 2.0.3.

1voto

Arup Rakshit Points 50675

J'ai exécuté le programme ci-dessous et il a fonctionné :

 gem install selenium-webdriver -v "2.35.0"

0voto

Matt Rohland Points 391

J'ai récemment installé Selenium Webdriver et j'ai constaté le même problème avec certains de mes scripts de test Python scripts. Après quelques recherches, j'ai pu déterminer que execute_script se bloquait lorsqu'il tentait de convertir la valeur de retour JS en un objet qui pouvait être évalué nativement (en Python pour mon scénario).

A accrocher :

self.driver.execute_script('document.body.innerHTML="<form></form>";')

Ne s'accroche pas :

self.driver.execute_script('document.body.innerHTML="<form></form>"; return true;')

Il est toujours possible de renvoyer des objets plus complexes, je fais simplement attention à toujours avoir explicitement JS return la valeur souhaitée ou true si j'ai seulement besoin que le script s'exécute.

J'espère que cela vous aidera.

Quelques-unes des lectures que j'ai faites pour comprendre cela :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X