Selenium: wyjątek FirefoxProfile Nie można załadować profilu

96

Zgodnie z poprzednim pytaniem zaktualizowałem Selenium do wersji 2.0.1 Ale teraz mam inny błąd, nawet jeśli pliki profilu istnieją pod /tmp/webdriver-py-profilecopy:

  Plik „/home/sultan/Repository/Django/monitor/app/request.py”, wiersz 236, w wykonaniu
    browser = Firefox (profil)
  Plik „/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py”, wiersz 46, w __init__
    self.binary, limit czasu),
  Plik „/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py”, wiersz 46, w __init__
    self.binary.launch_browser (self.profile)
  Plik „/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py”, wiersz 44, w launch_browser
    self._wait_until_connectable () 
  Plik „/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py”, wiersz 87, w _wait_until_connectable
    podnieść WebDriverException ("Nie można załadować profilu. Katalog profilu:% s"% self.profile.path)
selenium.common.exceptions.WebDriverException: nie można załadować profilu. Katalog profilu: / tmp / webdriver-py-profilecopy

Co jest nie tak? Jak mogę rozwiązać ten problem?

sułtan
źródło

Odpowiedzi:

132

Aktualizacja:

Zespół Selenium poprawiony w najnowszej wersji. W prawie wszystkich środowiskach poprawka to:

pip install -U selen

Nie jest jasne, w której wersji został naprawiony (najwyraźniej r13122 ), ale z pewnością przez 2.26.0 (aktualny w momencie aktualizacji) został naprawiony.


Ten błąd oznacza, że ​​_wait_until_connectable przekroczył limit czasu, ponieważ z jakiegoś powodu kod nie może połączyć się z rozszerzeniem webdriver, które zostało załadowane do przeglądarki Firefox.

Właśnie zgłosiłem błąd do selenu, gdzie otrzymuję ten błąd, ponieważ próbuję użyć serwera proxy i tylko 2 z 4 skonfigurowanych zmian w profilu zostały zaakceptowane przez firefox, więc proxy nie jest skonfigurowane do komunikacji rozszerzenie. Nie wiem, dlaczego tak się dzieje ...

https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/2061

Rachel
źródło
3
Dodanie sudojest wymagane, jeśli nie jesteś zalogowany jako root. W każdym razie to było uratowanie życia! Dzięki!!
Abhranil Das
Tak, pomaga to naprawić WebDriverException: Message: „Nie można załadować profilu.
tom joy
5
@AbhranilDas Nie potrzebujesz, sudojeśli używasz virtualenv(którego prawdopodobnie powinieneś użyć).
Kos
7
Nie, to rozwiązanie nie działa z przeglądarką Firefox 45.0b i najnowszym Selenium (2.5.1)
Alex GP
1
@ AlexG.P. Odpowiedź na to pytanie po raz pierwszy napisałem 4,5 roku temu. Podejrzewam, że minęło wystarczająco dużo czasu, że warto postawić nowe pytanie. Jeśli tak, dołącz odniesienie do tego pytania oraz: a) wersje Firefoksa i Selenium, które podałeś powyżej; b) Twój system operacyjny; c) twoja wersja pip. Domyślam się, że twój problem może być związany z wersją pip, ponieważ zmieniło się to w ciągu ostatnich 5 lat.
Rachel,
31

Miałem ten sam problem po uaktualnieniu Ubuntu do 12.04.

Problem występował po stronie pakietu i został naprawiony w najnowszej wersji biblioteki. Po prostu zaktualizuj bibliotekę selenu. Dla prawie wszystkich środowisk Python jest to:

pip install -U selenium
user1380597
źródło
Nie wiem dlaczego, ale mając selen 2.28.0 mam ten sam problem z FireFox 22.0 i 23.0 na Ubuntu. Tylko obniżenie wersji Firefoksa do 18.0 działa dobrze dla mnie (nigdy nie sprawdzałem innych wersji).
Dmitry
26

Miałem ten sam problem z FF 32.0 i selenem-2.42.1-py2.7.egg. Próbowałem zaktualizować selen, ale jest to już najnowsza wersja. Rozwiązaniem było obniżenie wersji Firefoksa do wersji 30. Oto proces:

#Download version 30 for Linux (This is the 64 bit)
wget http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/30.0/linux-x86_64/en-US/firefox-30.0.tar.bz2

tar -xjvf firefox-30.0.tar.bz2
#Remove the old version
sudo rm -rf /opt/firefox*
sudo mv firefox /opt/firefox30.0
#Create a permanent link
sudo ln -sf /opt/firefox30.0/firefox /usr/bin/firefox

To rozwiązało wszystkie problemy, a ta kombinacja działa lepiej!

Mijo
źródło
to naprawiło moją konfigurację !!
Macumbaomuerte
Jak obniżyć wersję Firefoksa na moim Macu? Używam scrapy / selenu na moim mactopie na „virtualenv” i mam ten sam błąd. Myślę, że gdybym obniżył wersję na moim Macu, naprawiłbym to.
brkr
8

Jako rozszerzenie odpowiedzi Jeffa Hoye'a , bardziej „Pythonic” sposobem byłoby utworzenie podklasy webdriver.firefox.firefox_profile.FirefoxProfilew następujący sposób:

class CygwinFirefoxProfile(FirefoxProfile):
    @property
    def path(self):
        path = self.profile_dir
        # Do stuff to the path as described in Jeff Hoye's answer
        return path

Następnie, aby utworzyć sterownik:

driver = webdriver.Firefox(firefox_profile=CygwinFirefoxProfile())
Joel Cross
źródło
5

Jeśli pip install -U seleniumnie działa (w moim przypadku nie zadziałało), spróbuj obniżyć przeglądarkę Firefox do poprzedniej wersji.

Miałem Firefoksa 49.0 i obniżyłem go do 45.0, aby upewnić się, że wersja jest obsługiwana przez selen. Wtedy działało idealnie.

Oto szybki sposób przejścia na starszą wersję przeglądarki Firefox 45.0:

sudo apt-get install firefox=45.0.2+build1-0ubuntu1

Mam nadzieję że to pomoże.

Chris
źródło
4

Jeśli używasz webdrivera z cygwin, problem polega na tym, że ścieżka do profilu jest nadal w formacie POSIX, co myli programy Windows. Moje rozwiązanie używa cygpath, aby przekonwertować go na format Windows.

w tym pliku / metodzie: selenium.webdriver.firefox.firefox_binary.launch_browser ():

zastąpić:

    self._start_from_profile_path(self.profile.path)

z:

    from subprocess import Popen, PIPE
    proc = Popen(['cygpath','-d',self.profile.path], stdout=PIPE, stderr=PIPE)
    stdout, stderr = proc.communicate()
    path = stdout.split('\n', 1)[0]

    self._start_from_profile_path(path)
    #self._start_from_profile_path(self.profile.path)

Ponieważ Python nie jest nawet zbliżony do mojego podstawowego języka programowania, jeśli ktoś może polecić bardziej Pythonowe podejście, może moglibyśmy wprowadzić je do dystrybucji. Z pewnością przydałby się, gdyby działał w Cygwin od razu po wyjęciu z pudełka.

Jeff Hoye
źródło
3

Miałem ten sam problem i uważałem, że to niewłaściwa kombinacja selenu / Firefoksa. Okazało się, że moje uprawnienia do .mozilla / folderu były dostępne tylko dla użytkownika root. To załatwiło chmod 770 ~/.mozilla/sprawę. Sugerowałbym upewnienie się, że nie jest to problem przed dalszym rozwiązywaniem problemów.

chillwx
źródło
1

pip install -U selenium

Miałem ten sam problem z Firefox 34.0.5 (Dec 1, 2014)uaktualnieniem Selenium z, 2.42.1aby 2.44.0rozwiązać mój problem.

Jednak od tamtej pory ponownie widziałem ten problem, myślę, że w wersji 2.44.0, a kolejna aktualizacja go naprawiła. Zastanawiam się więc, czy można to naprawić, po prostu odinstalowując, a następnie ponownie instalując. Jeśli tak, nie jestem pewien, co by to wskazywało na podstawowy problem.

Rob Bednark
źródło
Mam dokładnie ten sam problem z 2.44 i ff35 w oknach
pylover
0

Używałem selenu 2.53 i przeglądarki Firefox w wersji 55.0. Rozwiązałem ten problem, instalując starszą wersję przeglądarki Firefox (46.0.1), ponieważ selen 2.53 nie będzie działał z przeglądarką Firefox w wersji 47.0 i nowszych.

Rashid
źródło
-1

To nie jest właściwe rozwiązanie, ale zadziałało dla mnie, jeśli ktoś może poprawić, z przyjemnością się dowiem. Ja po prostu uruchomić mój skrypt jako root: sudo python myscript.py. Myślę, że mogę rozwiązać, zmieniając domyślny plik lub katalog profilu, który może działać.


źródło