2012-05-21 7 views
7

Zastanawiałem się, czy ktoś ma jakieś pomysły na to, w jaki sposób mogę dowiedzieć się, dlaczego I może się wydawać, że firefox działa poprzez selenowy webdriver. Co się dzieje, gdy biegnę:dlaczego firefox nie uruchamia się pod webmasterem selenu 2 na redhat 5.6

self.driver=webdriver.Firefox() 

dostaję pusty dialog na moim pulpicie. Używam wersji Redhat 5.6 i moja wersja selenowa to 2.21.3. I debugowania kodu ile mogę iść iz tego co mogę określić kod zamarza po wychowywanie puste okno na następujący kod w module firefox_binary:

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

Otworzyłem wiersz cmd i ręcznie uruchomił powyższe polecenie i nie pojawi się żadne puste okno dialogowe. To sprawiłoby, żebym pomyślał, że to nie jest błąd w firefoxie. Nie mogę znaleźć miejsca, w którym pojawiłby się błąd, który pojawiłby się . Jakieś pomysły?

aktualizacja

zainstalowałem CentOS 6 i zainstalowane firefox 10.0.6 i selen webdriver pracował z tą wersją

aktualizacja

Poza zastosowaniem CentOS 6 muszę ten problem także być rozwiązany na redhat, więc tutaj jest więcej szczegółów i co znalazłem. Złożę na to nagrodę, ponieważ musi zostać rozwiązana:

Wykopałem trochę więcej na ten temat i odkryłem, że problem dotyczy selenu przy użyciu biblioteki 32-bitowej. Mam wersję selenu 2.25.0 na serwerze Redhat Enterprise Linux Server 5.6 (x86_64) przy użyciu przeglądarki Firefox ESR 10.0.6 (64-bitowej). zmieniłem metodę _start_from_profile_path w firefoxBinary klasy, aby zobaczyć, gdzie leży problem:

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

i ogonami /tmp/ffoutput.txt Okazało się, że selen próbuje użyć 32 bitowego lib:

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

Ten komunikat pojawia się w trybie ciągłym, a Firefox zawiesza się, wyświetlając puste okno dialogowe. Zrobiłem ten problem i znalazłem kilka osób narzekających, ale żadnych rozwiązań, które działały (próbowałem połączyć się z 64-bitową biblioteką do 32-bitowego katalogu lib po przeniesieniu biblioteki 32-bitowej, ale to spowodowało awarię geko, próbowałem wysyłać ciągłe błędy do/dev/null, ale to nie rozwiązało niczego).

+0

Bez wyjątku, bez logu? Huh. Czy kiedykolwiek działało, czy jest to twoja pierwsza próba uruchomienia FF przez WebDriver? Czy możesz spróbować uruchomić Firefoksa, podając ścieżkę do niego konstruktorowi? –

+0

Jest to mój pierwszy raz na pudełku redhat. Miałem go uruchomionego na oknie Windows. Sprawdziłem self._start_cmd i stwierdziłem, że jest to dokładna poprawna ścieżka do firefox.jak już powiedziałem, sprawdziłem podczas debugowania, jakie polecenie było używane i znalazłem to/usr/bin/firefox -silent. Uruchomiłem to w terminalu i nie otrzymałem błędu. Uruchomiłem także/usr/bin/firefox (bez parametru -slient) i pojawi się firefox. Gdy użytkownik webdrivera powyższy kod firefox nie otwiera się, a na pulpicie redhat pojawia się puste okno dialogowe. – amadain

+0

nic nie jest dodawane do/var/log/messages, aby powiedzieć mi cokolwiek (gdzie firefox umieszcza swoje logowanie). – amadain

Odpowiedz

3

Jeśli odnosimy się do tej kwestii zgłoszonych w selen http://code.google.com/p/selenium/issues/detail?id=2852

Obejściem na 64bit dystrybucji Linuksa jest wydawanie tych poleceń:

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 

ten pracował dla mnie na moim polu.

+0

Od drugiej aktualizacji "Próbowałem połączyć linkę do 64-bitowej biblioteki lib z 32-bitową biblioteką lib, ale to spowodowało awarię geko", więc niestety to nie działało dla mnie – amadain

Powiązane problemy