python selenium selenium-webdriver

python - selenium.common.exceptions.WebDriverException: Mensaje: conexión rechazada



selenium-webdriver (6)

Como mencionó @kervvv, este problema probablemente esté relacionado con una versión anterior de Firefox que lo que la versión de selenium y / o geckodriver espera (s) o necesita (s). Cabe señalar, por lo que puedo decir, que el mensaje de error específico del selenio es algo genérico o vago; entonces, no muestra explícitamente por qué ocurre el error.

En caso de que los usuarios estén buscando ayuda mientras usan una versión anterior de Firefox, incluida la versión de soporte extendido (ESR), la siguiente solución debería funcionar bien.

  1. Visite la página de descarga de Firefox para descargar una versión Beta, Nocturna o Desarrollador de Firefox.
  2. Extraiga el paquete en una ubicación arbitraria en su sistema de archivos (en cualquier lugar que desee)
  3. Especifique el FirefoxBinary dentro de su código o script para apuntar a la ubicación descargada.

    from selenium import webdriver from selenium.webdriver.firefox.firefox_binary import FirefoxBinary binary = FirefoxBinary(''/home/username/firefox/firefox'') driver = webdriver.Firefox(firefox_binary=binary) driver.get(url)

Eso funciona para mí en Gentoo, por ejemplo, donde la versión de geckodriver (0.20.0) y selenium (3.11.0) son las últimas disponibles, mientras que Firefox (ESR) está en la versión 52.

Aquí está mi código:

from selenium import webdriver browser = webdriver.Firefox() browser.get(''http://www.python.org'') browser.close()

Lanzó el navegador Firefox cuando ejecuté este script, pero la página está en blanco, luego la línea de comando muestra el mensaje de error:

Traceback (most recent call last): File "ad.py", line 3, in <module> browser = webdriver.Firefox() File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 76, in __init__ keep_alive=True) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 92, in __init__ self.start_session(desired_capabilities, browser_profile) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 179, in start_session response = self.execute(Command.NEW_SESSION, capabilities) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute self.error_handler.check_response(response) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: connection refused

Mi versión de Python es 2.7.3 y la versión de selenio es selenium-3.0.0.b3.egg-info

Por favor, ¿cómo resuelvo el problema ...


Esto podría ser por varias razones.

  • Lo más probable es que la versión "más reciente" de su geckodriver no pueda comunicarse con su firefox "un poco más viejo".

  • La forma más fácil de solucionar esto sería probar diferentes versiones anteriores de geckodriver. Ejecute el siguiente comando para encontrar la versión actual de su geckodriver

    geckodriver --version

  • Si muestra la versión como 19 o superior, ejecute los siguientes pasos para usar geckodriver versión 17 (Funciona el 90% de las veces)

    1. Su geckodriver existente generalmente se puede colocar en /usr/local/bin cuando lo instaló anteriormente. Primero elimine esto ejecutando sudo rm -r /usr/local/bin/geckodriver

    2. Descargue la versión 17 de geckodriver desde este enlace . Mueva el archivo descargado ( geckodriver-v0.17.0-arm7hf.tar.gz ) de su carpeta de Downloads a su directorio de home

    3. Descomprima el archivo

      tar -xzvf geckodriver-v0.17.0-arm7hf.tar.gz

      Esto creará una carpeta llamada "geckodriver" en su directorio de inicio

    4. Mueva / copie este "geckodriver" extraído en /usr/local/bin/

      sudo cp geckodriver /usr/local/bin/

    5. correr

      sudo reboot

Vuelva a ejecutar su programa ahora ...
¡Deberia de funcionar!


Tenía este problema también. Necesario para configurar la PANTALLA. Para mí, el búfer de trama Xvfb se ejecuta en una máquina local a: 99 así.

$ export DISPLAY=:99


Tuve el mismo problema. Pensé que estaba relacionado con el proxy o el puerto (en vano), pero lo que resolvió mi problema fue simplemente actualizar Firefox. Estaba ejecutando 52.0.xxx y actualizado a 57.0.2 . Enlace here .


Verifique su archivo geckodriver.log (debe estar en el mismo directorio que el archivo python)

Si dice Error: GDK_BACKEND does not match available displays , instale pyvirtualdisplay:

pip install pyvirtualdisplay selenium

Es posible que también necesite xvfb:

sudo apt-get install xvfb # Debian sudo yum install Xvfb # Fedora

Luego intente agregar este código:

from pyvirtualdisplay import Display display = Display(visible=0, size=(800, 600)) display.start()

Ejemplo completo:

from pyvirtualdisplay import Display from selenium import webdriver display = Display(visible=0, size=(800, 600)) display.start() browser = webdriver.Firefox() browser.get(''http://www.python.org'') browser.close()