Je me demandais si quelqu'un avait une idée sur la façon dont je pourrais trouver pourquoi je pourquoi je ne parviens pas à faire fonctionner Firefox avec Selenium Webdriver. Ce que Ce qui se passe, c'est que lorsque je lance
self.driver=webdriver.Firefox()
J'obtiens un dialogue vide sur mon bureau. Je fonctionne sous Redhat 5.6 et ma version de selenium est 2.21.3. J'ai débogué le code aussi loin que possible. et d'après ce que je peux déterminer, le code se fige après l'apparition de la dialogue vide sur le code suivant dans le module firefox_binary :
Popen([self._start_cmd, "-slient"], stdout=PIPE, stderr=STDOUT, env=self._filefox_env).wait()
J'ai ouvert une invite cmd et exécuté manuellement la commande susmentionnée et aucun dialogue vide n'est apparu. Cela me fait penser que ce n'est pas pas une erreur de firefox. Je n'arrive pas à trouver où l'erreur pour ceci pourrait apparaisse. Avez-vous des idées ?
mise à jour
J'ai installé centos 6 et installé firefox 10.0.6 et selenium webdriver a fonctionné avec cette version
mise à jour
En plus d'utiliser centos 6, j'ai besoin que ce problème soit également résolu sur redhat. Voici donc plus de détails et ce que j'ai trouvé. Je vais mettre une prime sur ce sujet car il doit être résolu :
J'ai creusé un peu plus et j'ai trouvé que le problème vient du fait que Selenium utilise une librairie 32 bits. J'ai la version 2.25.0 de selenium sur Redhat Enterprise Linux Server version 5.6 (x86_64) utilisant Firefox ESR 10.0.6 (64 bit). J'ai modifié la méthode _start_from_profile_path dans la classe firefoxBinary pour voir où se situe le problème :
p=open("/tmp/ffoutput.txt", "w+")
Popen([self._start_cmd, "-silent"], stdout=p, stderr=STDOUT, env=self._firefox_env).communicate()
et j'ai parcouru le fichier /tmp/ffoutput.txt. J'ai découvert que Selenium essaie d'utiliser une librairie 32 bits :
Failed to dlopen /usr/lib/libX11.so.6
dlerror says: /usr/lib/libX11.so.6: wrong ELF class: ELFCLASS32
Ce message apparaît continuellement et firefox se bloque avec une boîte de dialogue vide. J'ai cherché ce problème sur Google et j'ai trouvé des gens qui se plaignaient mais aucune solution qui fonctionnait (j'ai essayé de mettre la librairie 64 bits dans le répertoire de la librairie 32 bits après avoir déplacé la librairie 32 bits mais cela a fait planter geko, j'ai essayé d'envoyer les erreurs continues vers /dev/null mais cela n'a rien résolu).