Selenium : FirefoxProfile 예외 프로필을로드 할 수 없음


96

이 이전 질문 나는 버전 2.0.1에 셀레늄을 업데이트하지만 지금은 프로필 파일이 아래에있는 경우에도 다른 오류가 /tmp/webdriver-py-profilecopy:

  파일 "/home/sultan/Repository/Django/monitor/app/request.py", 행 236, 수행 중
    브라우저 = Firefox (프로필)
  __init__에있는 파일 "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", 46 행
    self.binary, timeout),
  __init__에있는 파일 "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", 46 행
    self.binary.launch_browser (self.profile)
  launch_browser의 파일 "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", 44 행
    self._wait_until_connectable () 
  _wait_until_connectable에있는 파일 "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", 87 행
    WebDriverException ( "프로필을로드 할 수 없습니다. 프로필 디렉터리 : % s"% self.profile.path)
selenium.common.exceptions.WebDriverException : 프로필을로드 할 수 없습니다. 프로필 디렉토리 : / tmp / webdriver-py-profilecopy

뭐가 잘못 되었 니? 이 문제를 어떻게 해결할 수 있습니까?

답변:


132

최신 정보:

Selenium 팀이 최신 버전으로 수정되었습니다. 거의 모든 환경에서 수정 사항은 다음과 같습니다.

pip 설치 -U 셀레늄

어느 버전에서 수정 되었는지 (분명히 r13122 ) 확실하지 않지만 2.26.0 (업데이트 당시 현재)에서는 확실히 수정되었습니다.


이 오류는 _wait_until_connectable이 시간 초과되었음을 의미합니다. 어떤 이유로 코드가 firefox에로드 된 webdriver 확장에 연결할 수 없기 때문입니다.

프록시를 사용하려고하는데 프로필에 구성된 4 가지 변경 사항 중 2 개만 파이어 폭스에 의해 수락되어 프록시가 대화하도록 구성되지 않았기 때문에이 오류가 발생하는 셀레늄에 오류를보고했습니다. 확장. 왜 이런 일이 발생하는지 잘 모르겠습니다 ...

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


3
sudo루트로 로그인하지 않은 경우를 추가 해야합니다. 어쨌든 이것은 생명의 은인이었습니다! 감사!!
Abhranil Das

예, WebDriverException을 수정하는 데 도움이됩니다. 메시지 : '프로필을로드 할 수 없습니다.
tom joy

5
@AbhranilDas (아마도 사용해야 할) sudoa를 사용하는 경우 필요하지 않습니다 virtualenv.
Kos

7
아니요,이 솔루션은 Firefox 45.0b 및 최신 Selenium (2.5.1)에서 작동하지 않습니다
Alex GP

1
@ AlexG.P. 나는 4.5 년 전에이 질문에 대한 답을 처음 썼습니다. 나는 새로운 질문을 제기 할 가치가있을만큼 충분한 시간이 지났다고 생각한다. 그렇다면이 질문에 대한 언급과 a) 위에서 제공 한 Firefox 및 Selenium 버전; b) 귀하의 OS c) 귀하의 pip 버전. 지난 5 년 동안 변경 되었기 때문에 귀하의 문제가 pip 버전과 관련이있을 수 있다고 생각합니다.
Rachel

31

Ubuntu를 12.04로 업그레이드 한 후에도 동일한 문제가 발생했습니다.

이 문제는 패키지 측에 있었고 최신 버전의 라이브러리에서 수정되었습니다. 셀레늄 라이브러리를 업데이트하기 만하면됩니다. 거의 모든 Python 환경에서 이것은 다음과 같습니다.

pip install -U selenium

이유는 모르겠지만 셀레늄 2.28.0이 있으면 Ubuntu의 FireFox 22.0 및 23.0과 동일한 문제가 있습니다. firefox를 18.0으로 다운 그레이드하는 것만으로도 잘 작동합니다 (다른 버전은 확인하지 않음).
Dmitry

26

나는 FF 32.0과 Selenium selenium-2.42.1-py2.7.egg에서 같은 문제에 직면했습니다. 셀레늄 업데이트를 시도했지만 이미 최신 버전입니다. 해결책은 Firefox를 버전 30으로 다운 그레이드하는 것이 었습니다. 프로세스는 다음과 같습니다.

#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

이것은 모든 문제를 해결했으며이 조합이 더 잘 작동합니다!


이것은 내 설정을 수정했습니다!
Macumbaomuerte

Mac에서 Firefox를 어떻게 다운 그레이드합니까? 'virtualenv'의 mactop에서 scrapy / selenium을 사용하고 동일한 오류가 발생합니다. 내 Mac에서 다운 그레이드하면 고칠 것이라고 생각합니다.
brkr

8

Jeff Hoye 의 답변에 대한 확장으로 더 'Pythonic'방식은 webdriver.firefox.firefox_profile.FirefoxProfile다음과 같이 하위 클래스 를 만드는 것입니다 .

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

그런 다음 드라이버를 생성하려면 :

driver = webdriver.Firefox(firefox_profile=CygwinFirefoxProfile())

5

pip install -U selenium작동하지 않는 경우 (제 경우 에는 작동하지 않음) Firefox를 이전 버전으로 다운 그레이드 해보세요.

Firefox 49.0이 있었고 버전이 셀레늄에서 지원되는지 확인하기 위해 45.0으로 다운 그레이드했습니다. 그때 완벽하게 작동했습니다.

Firefox 45.0으로 빠르게 다운 그레이드하는 방법은 다음과 같습니다.

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

도움이 되었기를 바랍니다.


4

cygwin에서 webdriver를 실행하는 경우 문제는 프로필 경로가 여전히 POSIX 형식이므로 Windows 프로그램을 혼동합니다. 내 솔루션은 cygpath를 사용하여 Windows 형식으로 변환합니다.

이 파일 / 메서드 : selenium.webdriver.firefox.firefox_binary.launch_browser () :

바꾸다:

    self._start_from_profile_path(self.profile.path)

와:

    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)

Python은 내 기본 프로그래밍 언어에 가깝지 않기 때문에 누군가가 더 파이썬적인 접근 방식을 추천 할 수 있다면 배포판에 밀어 넣을 수 있습니다. 상자에서 꺼내 자마자 cygwin에서 작동하면 편리합니다.


3

나는 같은 문제가 있었고 셀레늄 / Firefox의 잘못된 콤보라고 믿었습니다. 내 .mozilla / 폴더 권한은 루트 사용자 만 액세스 할 수 있다는 것이 밝혀졌습니다. 이렇게 chmod 770 ~/.mozilla/속임수를 썼는지. 추가 문제를 해결하기 전에 이것이 문제가 아닌지 확인하는 것이 좋습니다.


1

pip install -U selenium

나는 동일한 문제가 Firefox 34.0.5 (Dec 1, 2014)있었고 Selenium을 업그레이드 2.42.1하여 2.44.0문제 를 해결했습니다.

그러나 나는이 문제를 다시 보았고 2.44.0으로 생각하고 다른 업그레이드로 해결했습니다. 그래서 간단히 제거하고 다시 설치하면 문제가 해결 될 수 있는지 궁금합니다. 그렇다면 근본적인 문제가 무엇인지 잘 모르겠습니다.


나는 창에서 2.44와 ff35와 똑같은 문제가 있습니다
pylover

0

셀레늄 2.53과 파이어 폭스 버전 55.0을 사용하고있었습니다. selenium 2.53이 firefox 버전 47.0 이상에서 작동하지 않기 때문에 이전 버전의 firefox (46.0.1)를 설치하여이 문제를 해결했습니다.


-1

이것은 적절한 해결책은 아니지만 나를 위해 일했습니다. 누군가가 향상 될 수 있다면 나는 알게되어 기쁠 것입니다. 난 그냥 루트로 내 스크립트를 실행합니다 sudo python myscript.py. 프로필 기본 파일이나 디렉토리를 변경하여 해결할 수 있다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.