2016-06-26 2 views
1

을 내가 코드 fallowing 실행할 때 나는 우분투 64셀레늄 웹 드라이브 socket.error

를 사용하여 :

% python seleniumtest.py 
Traceback (most recent call last): 
    File "seleniumtest.py", line 2, in <module> 
    x = webdriver.Firefox() 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 85, in __init__ 
    keep_alive=True) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 90, in __init__ 
    self.start_session(desired_capabilities, browser_profile) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 177, in start_session 
    response = self.execute(Command.NEW_SESSION, capabilities) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 234, in execute 
    response = self.command_executor.execute(driver_command, params) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/remote_connection.py", line 401, in execute 
    return self._request(command_info[0], url, body=data) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/remote_connection.py", line 432, in _request 
    resp = self._conn.getresponse() 
    File "/usr/lib/python2.7/httplib.py", line 1051, in getresponse 
    response.begin() 
    File "/usr/lib/python2.7/httplib.py", line 415, in begin 
    version, status, reason = self._read_status() 
    File "/usr/lib/python2.7/httplib.py", line 371, in _read_status 
    line = self.fp.readline(_MAXLINE + 1) 
    File "/usr/lib/python2.7/socket.py", line 476, in readline 
    data = self._sock.recv(self._rbufsize) 
socket.error: [Errno 104] Connection reset by peer 

이 문제가 무엇인가

from selenium import webdriver 
x = webdriver.Firefox() 
x.get('any address') 

내가 fallowing 오류가 있습니까? 이 문제를 해결하는 방법은 무엇입니까?

터미널 1 : % sudo Xvfb :10 -ac 터미널 2 : $ export DISPLAY=:10

실행 fallowing 코드 :


이 문제는 내가 터미널에서 fallowing 명령을 실행 해결

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

driver = webdriver.Firefox() 
driver.get("http://www.python.org") 
assert "Python" in driver.title 
elem = driver.find_element_by_name("q") 
elem.clear() 
elem.send_keys("pycon") 
elem.send_keys(Keys.RETURN) 
assert "No results found." not in driver.page_source 
driver.close() 

이를 반환 오류 :

% python seleniumtest.py 
Traceback (most recent call last): 
    File "seleniumtest.py", line 4, in <module> 
    driver = webdriver.Firefox() 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 81, in __init__ 
    self.binary, timeout) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 51, in __init__ 
    self.binary.launch_browser(self.profile, timeout=timeout) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 68, in launch_browser 
    self._wait_until_connectable(timeout=timeout) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 98, in _wait_until_connectable 
    raise WebDriverException("The browser appears to have exited " 
selenium.common.exceptions.WebDriverException: Message: The browser appears to have exited before we could connect. If you specified a log_file in the FirefoxBinary constructor, check it for details. 

FirefoxSelenium 버전 : 때 내 파이어 폭스 자동으로 모질라 파이어 폭스 버전에서

from selenium import webdriver 
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary 

try: 
    driver = webdriver.Firefox() 
except: 
    binary = FirefoxBinary('C:/Program Files (x86)/Mozilla Firefox/firefox.exe') 
    driver = webdriver.Firefox(firefox_binary=binary) 

또한 수 있습니다 문제 : 다음 코드를 사용하는

% firefox -v 
Mozilla Firefox 47.0 

% pip show selenium 
--- 
Metadata-Version: 2.0 
Name: selenium 
Version: 2.53.5 
Summary: Python bindings for Selenium 
Home-page: https://github.com/SeleniumHQ/selenium/ 
Author: UNKNOWN 
Author-email: UNKNOWN 
Installer: pip 
License: UNKNOWN 
Location: /usr/local/lib/python2.7/dist-packages 
Requires: 
Classifiers: 
    Development Status :: 5 - Production/Stable 
    Intended Audience :: Developers 
    License :: OSI Approved :: Apache Software License 
    Operating System :: POSIX 
    Operating System :: Microsoft :: Windows 
    Operating System :: MacOS :: MacOS X 
    Topic :: Software Development :: Testing 
    Topic :: Software Development :: Libraries 
    Programming Language :: Python 
    Programming Language :: Python :: 2.6 
    Programming Language :: Python :: 2.7 
    Programming Language :: Python :: 3.2 
    Programming Language :: Python :: 3.3 
    Programming Language :: Python :: 3.4 
+0

최신 클라이언트 버전의 셀레늄을 사용하는 경우 파이어 폭스 브라우저를 업데이트해야합니다. – xXxpRoGrAmmErxXx

+0

@xXxpRoGrAmmErxXx 지금 확인하겠습니다! – Lai32290

+0

@xXxpRoGrAmmErxXx 제 '파이어 폭스'와 '셀레늄'버전을 확인했는데 둘 다 마지막 버전이라고 생각합니다. 내 게시물 – Lai32290

답변

0

아마 당신은 셀레늄을 위해 Firefoxdriver가 필요합니다. 셀렌 용 Chrome을 사용했고 Chromedriver를 다운로드했습니다. https://sites.google.com/a/chromium.org/chromedriver/downloads에서 다운로드 할 수 있습니다. 이고 https://sites.google.com/a/chromium.org/chromedriver/getting-started에서 참조 할 수 있습니다.

from selenium import webdriver 
import time 
chrome_driver_path = "/home/shifeng/shifengworld/tool/chrome_driver_downloads/chromedriver" 
browser = webdriver.Chrome(executable_path = chromedriver_path) 
href = "http://stackoverflow.com" 
browser.get(href) 
time.sleep(2) 

내 필요는 괜찮습니다.

0

시도 자체 업데이트, webdriver.Firefox()이 나를 위해 작동하지 않아서 Firefox 버전을 36.0으로 다운 그레이드해야했습니다.

+0

바이너리로 유용합니까? – Windyground

+0

죄송합니다. – ands

+0

바이너리 = FirefoxBinary (XXX), FirefoxBinary()가 유용하다는 질문을 이해할 수 없습니까? – Windyground

관련 문제