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.
- Visite la página de descarga de Firefox para descargar una versión Beta, Nocturna o Desarrollador de Firefox.
- Extraiga el paquete en una ubicación arbitraria en su sistema de archivos (en cualquier lugar que desee)
-
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)
-
-
Su geckodriver existente generalmente se puede colocar en
/usr/local/bin
cuando lo instaló anteriormente. Primero elimine esto ejecutandosudo rm -r /usr/local/bin/geckodriver
-
Descargue la versión 17 de geckodriver desde este enlace . Mueva el archivo descargado (
geckodriver-v0.17.0-arm7hf.tar.gz
) de su carpeta deDownloads
a su directorio dehome
-
Descomprima el archivo
tar -xzvf geckodriver-v0.17.0-arm7hf.tar.gz
Esto creará una carpeta llamada "geckodriver" en su directorio de inicio
-
Mueva / copie este "geckodriver" extraído en
/usr/local/bin/
sudo cp geckodriver /usr/local/bin/
-
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()
Lo primero que debe hacer: actualice Firefox y asegúrese de tener instalada la última versión de geckodriver ( https://github.com/mozilla/geckodriver/releases )