2012-05-21 5 views
7

Ich fragte mich, ob jemand irgendwelche Ideen hat, wie ich herausfinden konnte, warum ich scheinen kann, Firefox durch Selen Webdriver laufen zu bekommen. Was passiert, ist, wenn ich laufe:Warum Firefox wird nicht unter Selen starten 2 Webdriver auf redhat 5.6

self.driver=webdriver.Firefox() 

ich einen leeren Dialog auf meinem Desktop zu bekommen. Ich laufe auf Redhat 5.6 und meine Selen Version ist 2.21.3. Ich gedebuggt den Code so weit ich gehen kann und von dem, was ich den Code bestimmen kann, friert nach dem leeren Dialog auf dem folgenden Code innerhalb der firefox_binary Modul Erziehung:

Popen([self._start_cmd, "-slient"], stdout=PIPE, stderr=STDOUT, env=self._filefox_env).wait() 

ich eine cmd Aufforderung geöffnet und manuell führte den oben genannten Befehl und kein solcher leerer Dialog erscheint. Das würde mich denken lassen, dass sein kein Firefox-Fehler ist. Ich kann nicht finden, wo der Fehler für dieses erscheinen würde. Irgendwelche Ideen?

Update

ich installiert CentOS 6 und installiert Firefox 10.0.6 und Selen WebDriver mit dieser Version

Update

Abgesehen davon CentOS 6 ich dieses Problem müssen auch gearbeitet auf Redhat gelöst werden, so hier sind mehr Details und was ich gefunden habe. Ich werde ein Kopfgeld darauf setzen, wie es gelöst werden muss:

Ich grub ein wenig mehr auf und fand, dass das Problem mit Selen ist, das eine 32-Bit-lib verwendet. Ich habe Selen Version 2.25.0 auf Redhat Enterprise Linux Server Version 5.6 (x86_64) mit Firefox ESR 10.0.6 (64 Bit). änderte ich die _start_from_profile_path Methode in der firefoxBinary Klasse zu sehen, wo das Problem liegt:

p=open("/tmp/ffoutput.txt", "w+") 
Popen([self._start_cmd, "-silent"], stdout=p, stderr=STDOUT, env=self._firefox_env).communicate() 

und ich tailed /tmp/ffoutput.txt fand ich, dass Selen eine 32-Bit-lib zu verwenden versucht:

Failed to dlopen /usr/lib/libX11.so.6 
dlerror says: /usr/lib/libX11.so.6: wrong ELF class: ELFCLASS32 

Diese Nachricht tritt kontinuierlich auf und Firefox bleibt mit einem leeren Dialog hängen. Ich googelte dieses Problem und fand einige Leute, die sich beschweren, aber keine Lösungen, die funktionierten (ich versuchte, die 64-Bit-lib an die 32-Bit-lib-direktive zu verschieben, nachdem ich die 32-Bit-lib verschoben hatte/null aber das hat nichts gelöst).

+0

Keine Ausnahme, kein Protokoll? Huh. Hat es jemals funktioniert, oder ist dies der erste Versuch, FF über WebDriver zu starten? Könnten Sie versuchen, Firefox zu starten, indem Sie einen Pfad zum Konstruktor angeben? –

+0

Es ist mein erstes Mal auf einer Redhat-Box. Ich hatte es auf einer Windows-Box laufen. Ich überprüfte self._start_cmd und fand, dass es der genau richtige Pfad zu Firefox ist.Wie ich schon sagte, habe ich unter Debug überprüft, welcher Befehl verwendet wurde und ich fand es/usr/bin/firefox -silent. Ich habe das in einem Terminal ausgeführt und keinen Fehler bekommen. Ich lief auch/usr/bin/firefox (ohne die -slient) und Firefox erscheint. Beim Webdriver Benutzer öffnet sich der oben genannte Code Firefox nicht und ein leerer Dialog erscheint im Red Hat Desktop. – amadain

+0

Es wurde nichts zu/var/log/messages hinzugefügt, um mir irgendwas zu sagen (wo Firefox seine Protokollierung ablegt). – amadain

Antwort

3

Wenn Sie zu diesem Thema in Selenium berichtet beziehen http://code.google.com/p/selenium/issues/detail?id=2852

Die Arbeit um auf 64Bit Linux-Distributionen ist es, diese Befehle zu erteilen:

sudo mv /usr/lib/libX11.so.6 /usr/lib/libX11.so.6.old 
sudo ln -s /usr/lib64/libX11.so.6.3.0 /usr/lib/libX11.so.6 

Das ist für mich auf meine Box gearbeitet.

+0

Ab dem 2. Update "Ich habe versucht, die 64-Bit-Bibliothek auf die 32-Bit-Bibliothek zu verschieben, nachdem die 32-Bit-Bibliothek verschoben wurde, aber das hat zum Absturz geführt", so hat das leider nicht funktioniert – amadain

Verwandte Themen