IT Share you

Selenium WebDriverException을 수정하는 방법 : 연결하기 전에 브라우저가 종료 된 것 같습니다.

shareyou 2020. 12. 3. 20:49
반응형

Selenium WebDriverException을 수정하는 방법 : 연결하기 전에 브라우저가 종료 된 것 같습니다.


selenium webdriver를 사용하기 위해 centos6.4 서버에 firefox와 Xvfb를 설치했습니다.

하지만 코드를 실행할 때 오류가 발생했습니다.

from selenium import webdriver
browser = webdriver.Firefox()

오류

selenium.common.exceptions.WebDriverException: Message: 
'The browser appears to have exited before we could connect. The output was: None'

나는 stackoverflow에서 관련 페이지를 읽었고 누군가 tmp 폴더의 모든 파일을 제거하도록 제안했기 때문에 그렇게했습니다. 그러나 여전히 작동하지 않습니다.

누구든지 저에게 도움을 줄 수 있습니까?

미리 감사드립니다!

편집하다

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/firefox/webdriver.py", line 59, in __init__
    self.binary, timeout),
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/firefox/extension_connection.py", line 47, in __init__
    self.binary.launch_browser(self.profile)
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 64, in launch_browser
    self._wait_until_connectable()
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 103, in _wait_until_connectable
    self._get_firefox_output())
selenium.common.exceptions.WebDriverException: Message: 'The browser appears to have exited     before we could connect. The output was: None' 

Google 직원에게는이 답변이 효과가 없었으므로 대신 이 답변 을 사용해야 했습니다 . AWS Ubuntu를 사용하고 있습니다.

기본적으로 Xvfb를 설치 한 다음 pyvirtualdisplay를 설치해야했습니다.

sudo apt-get install xvfb
sudo pip install pyvirtualdisplay

그 작업을 마치면이 파이썬 코드가 작동했습니다.

#!/usr/bin/env python

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(1024, 768))
display.start()

browser = webdriver.Firefox()
browser.get('http://www.ubuntu.com/')
print browser.page_source

browser.close()
display.stop()

첫 번째 답변에 대해 @ That1Guy에게 감사드립니다.


Jenkins 및 xvfb가 설치된 (헤드리스) Ubuntu 14.04 서버에서 실행되었습니다. 셀레늄 (버전 2.53) 용 Firefox 드라이버를 사용하는 파이썬 스크립트를 실행하는 빌드 실패를 시작한 최신 안정 Firefox (47)를 설치했습니다.

분명히 Firefox 47+는 Selenium 2.53에서 사용되는 드라이버와 호환되지 않으며 Selenium 3+는 "Marionette"또는 "Gecko Driver"(아직 공식적으로 출시되지 않은)라는 새로운 드라이버를 사용할 것입니다.

이 페이지에서는 여러 언어로 새 드라이버를 잘 사용하는 방법을 설명합니다. https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver

원래:

  1. github의 프로젝트에서 실행 파일 가져 오기 / 빌드 : https://github.com/mozilla/geckodriver/releases (그리고 perms가 실행 가능하도록 설정되어 있는지 확인하십시오, IE chmod a+x /path/to/geckdriver-executable)
  2. 바이너리를 "와이어"로 이름 변경 / 복사
  3. 바이너리의 위치가 셀레늄 테스트를 실행할 때 빌드가 사용하는 PATH에 추가되었는지 확인하십시오.
  4. 새 드라이버를 사용하도록 셀레늄 테스트 업데이트

Python의 경우 4 단계는 다음과 같습니다.

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
firefox_capabilities['binary'] = '/usr/bin/firefox'

driver = webdriver.Firefox(capabilities=firefox_capabilities)

나도 같은 문제에 직면했습니다. 저는 Firefox 47과 Selenium 2.53을 사용했습니다. Firefox를 45로 다운 그레이드했습니다.

  1. 먼저 Firefox 47을 제거하십시오.

    sudo apt-get purge firefox
    
  2. 사용 가능한 버전을 확인하십시오.

    apt-cache show firefox | grep Version
    

    다음과 같은 사용 가능한 Firefox 버전이 표시됩니다.

    버전 : 47.0 + build3-0ubuntu0.16.04.1
    버전 : 45.0.2 + build1-0ubuntu1

  3. 특정 버전 설치

    sudo apt-get install firefox=45.0.2+build1-0ubuntu1
    
  4. 다음으로 새로운 버전으로 다시 업그레이드하지 않아도됩니다.

    sudo apt-mark hold firefox
    
  5. If you want to upgrade later

    sudo apt-mark unhold firefox
    sudo apt-get upgrade
    

Check your DISPLAY environment variable. Run echo $DISPLAY in the command line.

If nothing is printed, then you are running FireFox without any DISPLAY assigned. You should assign one! Run export DISPLAY=:1 in the command line before running your python script.

Check this thread for more information: http://hashcat.net/forum/thread-1973.html


I think the simplest solution here is just run Python with xvfb-run:

sudo apt-get install xvfb
xvfb-run python <your_file_or_args>

Rollback your Firefox to the previous working version. I suggest 2 versions back. Disable Firefox Maintenance Service.

I was working on a solution and the Firefox Maintenance Service updated Firefox to the latest build in the background. This broke my code and it was giving me this error.

Now it is fixed!

Thank you everyone!


This error is due to your Xvfb is not running. So restart your xvfb:

Xvfb :99 -ac

then check. This works for me.


Instead of downgrading firefox from 47 version to 45 or something I'll suggest to upgrade to 47.0.1 or above since they seem to fix an issue.

But if your OS doesn't have new packages in repo (for example Ubuntu 14.04 in time of this answer), you can use debs from ubuntuzilla project:

wget sourceforge.net/projects/ubuntuzilla/files/mozilla/apt/pool/main/f/firefox-mozilla-build/firefox-mozilla-build_47.0.1-0ubuntu1_amd64.deb

sudo dpkg -i firefox-mozilla-build_47.0.1-0ubuntu1_amd64.deb

For x86 use _i386.deb postfix. That sold problem for me


I fixed this by running a recursive chown against not only the python script using selenium, but against the entire virtualenv that script was running in. I changed the ownership to the user running the file. After that, this error went away.


I also faced the same issue, what I did was:

  1. Upgrade selenium package

    sudo pip install -U selenium
    
  2. Instead of rolling back to older version(like suggested) I rolled up to newer version(48.0, I was previously using V47.0). (for upgrading follow the instructions given by Toby Speight but instead of choosing older version choose newer version)


update your selenuim version ---> pip install -U selenium


It can be solved by changing the file permission of the output file ( or related files to the program).
I used Firefox's webdriver.

Try:

chmod -R 777 output_file

This solved me the same trouble you have.

참고URL : https://stackoverflow.com/questions/26070834/how-to-fix-selenium-webdriverexception-the-browser-appears-to-have-exited-befor

반응형