Selenium: exceção FirefoxProfile Não é possível carregar o perfil

96

De acordo com esta pergunta anterior , atualizei o Selenium para a versão 2.0.1 Mas agora tenho outro erro, mesmo quando os arquivos de perfil existem em /tmp/webdriver-py-profilecopy:

  Arquivo "/home/sultan/Repository/Django/monitor/app/request.py", linha 236, em executar
    navegador = Firefox (perfil)
  Arquivo "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", linha 46, em __init__
    self.binary, timeout),
  Arquivo "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", linha 46, em __init__
    self.binary.launch_browser (self.profile)
  Arquivo "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", linha 44, em launch_browser
    self._wait_until_connectable () 
  Arquivo "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", linha 87, em _wait_until_connectable
    raise WebDriverException ("Não é possível carregar o perfil. Perfil Dir:% s"% self.profile.path)
selenium.common.exceptions.WebDriverException: Não é possível carregar o perfil. Diretório do perfil: / tmp / webdriver-py-profilecopy

O que está errado? Como posso resolver esse problema?

sultão
fonte

Respostas:

132

Atualizar:

Equipe Selenium corrigida na última versão. Para quase todos os ambientes, a solução é:

pip install -U selênio

Não está claro em que versão foi corrigido (aparentemente r13122 ), mas certamente na 2.26.0 (atual no momento da atualização) ele foi corrigido.


Este erro significa que _wait_until_connectable está expirando porque, por algum motivo, o código não pode se conectar à extensão do webdriver que foi carregada no firefox.

Acabei de relatar um erro ao selenium onde estou recebendo este erro porque estou tentando usar um proxy e apenas 2 das 4 alterações configuradas no perfil foram aceitas pelo firefox, então o proxy não está configurado para se comunicar com a extensão. Não sei porquê isso está acontecendo...

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

Rachel
fonte
3
Adicionar um sudoé necessário se não estiver conectado como root. De qualquer forma, foi um salva-vidas! Obrigado!!
Abhranil Das
Sim, ajuda a corrigir WebDriverException: Mensagem: 'Não é possível carregar o perfil.
tom joy
5
@AbhranilDas Você não precisa sudose estiver usando um virtualenv(que provavelmente deveria usar).
Kos
7
Não, esta solução não funciona com Firefox 45.0b e Selenium (2.5.1) mais recente
Alex GP
1
@ AlexG.P. Escrevi pela primeira vez a resposta a esta pergunta há 4,5 anos. Suspeito que já passou tempo suficiente para que valha a pena levantar uma nova questão. Se o fizer, inclua uma referência a esta pergunta e: a) as versões do Firefox e Selenium fornecidas acima; b) seu sistema operacional; c) sua versão do pip. Eu acho que seu problema pode estar relacionado à versão do pip, porque ela mudou nos últimos 5 anos.
Rachel
31

Tive o mesmo problema depois de atualizar o Ubuntu para 12.04.

O problema estava no lado do pacote e foi corrigido na versão mais recente da biblioteca. Basta atualizar a biblioteca de selênio. Para quase todos os ambientes Python, isso é:

pip install -U selenium
user1380597
fonte
Não sei por que, mas tendo selênio 2.28.0 eu tenho o mesmo problema com FireFox 22.0 e 23.0 no Ubuntu. Apenas o downgrade do firefox para 18.0 funciona bem para mim (nunca verifiquei outras versões).
Dmitry de
26

Eu enfrentei o mesmo problema com FF 32.0 e Selenium selenium-2.42.1-py2.7.egg. Tentei atualizar o selênio, mas já é a versão mais recente. A solução foi fazer o downgrade do Firefox para a versão 30. Aqui está o processo:

#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

Isso resolveu todos os problemas e essa combinação funciona melhor!

Mijo
fonte
isso consertou minha configuração !!
Macumbaomuerte
Como faço o downgrade do Firefox no meu mac? Estou usando scrapy / selenium no meu mactop no 'virtualenv' e tendo o mesmo erro. Eu acho que se eu fizesse downgrade no meu mac, isso iria consertar.
brkr
8

Como uma extensão da resposta de Jeff Hoye , uma maneira mais 'Pythônica' seria criar uma subclasse da webdriver.firefox.firefox_profile.FirefoxProfileseguinte forma:

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

Então, para criar seu driver:

driver = webdriver.Firefox(firefox_profile=CygwinFirefoxProfile())
Joel Cross
fonte
5

Se pip install -U seleniumnão funcionar (não funcionou, no meu caso), tente fazer o downgrade de seu Firefox para uma versão anterior.

Eu tinha o Firefox 49.0 e rebaixei para 45.0 para ter certeza de que a versão é compatível com o selenium. Funcionou perfeitamente então.

Esta é uma maneira rápida de fazer o downgrade para o Firefox 45.0:

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

Espero que isto ajude.

Chris
fonte
4

Se você estiver executando o webdriver no cygwin, o problema é que o caminho para o perfil ainda está no formato POSIX, o que confunde os programas do Windows. Minha solução usa cygpath para convertê-lo em formato Windows.

neste arquivo / método: selenium.webdriver.firefox.firefox_binary.launch_browser ():

substituir:

    self._start_from_profile_path(self.profile.path)

com:

    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)

Já que Python não está nem perto de minha linguagem de programação primária, se alguém puder recomendar uma abordagem mais pítônica, talvez possamos colocá-la na distribuição. Com certeza seria útil se funcionasse no cygwin fora da caixa.

Jeff Hoye
fonte
3

Eu tive o mesmo problema e acreditei que era a combinação errada de selênio / Firefox. Descobri que minhas permissões .mozilla / pasta eram acessíveis apenas ao usuário root. Fazer chmod 770 ~/.mozilla/o truque funcionou. Eu sugeriria verificar se esse não é o problema antes de solucionar o problema.

chillwx
fonte
1

pip install -U selenium

Tive o mesmo problema Firefox 34.0.5 (Dec 1, 2014)e atualizei o Selenium de 2.42.1para 2.44.0resolvê-lo.

No entanto, desde então vi esse problema novamente, acho que com 2.44.0, e outra atualização o corrigiu. Portanto, estou me perguntando se isso pode ser corrigido simplesmente desinstalando e reinstalando. Nesse caso, não tenho certeza do que isso indicaria o problema subjacente.

Rob Bednark
fonte
Tenho exatamente o mesmo problema com 2.44 e ff35 no Windows
pylover de
0

Eu estava usando selênio 2.53 e firefox versão 55.0. Resolvi esse problema instalando a versão mais antiga do firefox (46.0.1), pois o selenium 2.53 não funcionará para o firefox versão 47.0 e superior.

Rashid
fonte
-1

Esta não é uma solução adequada, mas funcionou para mim, se alguém puder melhorar, ficaria feliz em saber. Eu só executar o meu script como root: sudo python myscript.py. Acho que posso resolver alterando o arquivo ou diretório padrão do perfil pode funcionar.


fonte