python selenium firefox selenium-firefoxdriver geckodriver

Selenium usando Python: el ejecutable Geckodriver debe estar en RUTA



python geckodriver path (21)

selenium.common.exceptions.WebDriverException: Mensaje: el ejecutable ''geckodriver'' debe estar en RUTA.

En primer lugar, deberá descargar el último geckodriver ejecutable desde aquí para ejecutar el último Firefox con selenio

En realidad, los enlaces del cliente Selenium intentan localizar el ejecutable geckodriver desde la PATH sistema. Deberá agregar el directorio que contiene el ejecutable a la ruta del sistema.

  • En los sistemas Unix, puede hacer lo siguiente para agregarlo a la ruta de búsqueda de su sistema, si está utilizando un shell compatible con bash:

    export PATH=$PATH:/path/to/directory/of/executable/downloaded/in/previous/step

  • En Windows, deberá actualizar la variable del sistema Path para agregar la ruta completa del directorio al geckodriver ejecutable manually o la línea de comandos (no olvide reiniciar su sistema después de agregar geckodriver ejecutable en la RUTA del sistema para que surta efecto) . El principio es el mismo que en Unix.

Ahora puede ejecutar su código de la misma manera que lo hace a continuación: -

from selenium import webdriver browser = webdriver.Firefox()

selenium.common.exceptions.WebDriverException: Mensaje: Ubicación binaria del navegador esperada, pero no se puede encontrar el binario en la ubicación predeterminada, no se proporciona la capacidad ''moz: firefoxOptions.binary'' y no se ha establecido un indicador binario en la línea de comandos

La excepción indica claramente que ha instalado Firefox en otra ubicación mientras Selenium está tratando de encontrar Firefox y ejecutarlo desde la ubicación predeterminada, pero no pudo encontrarlo. Debe proporcionar explícitamente la ubicación binaria instalada de Firefox para iniciar Firefox de la siguiente manera: -

from selenium import webdriver from selenium.webdriver.firefox.firefox_binary import FirefoxBinary binary = FirefoxBinary(''path/to/installed firefox binary'') browser = webdriver.Firefox(firefox_binary=binary)

Soy nuevo en programación y comencé con Python aproximadamente 2 meses y estoy revisando Automate the Boring Stuff de Sweigart con texto de Python . Estoy usando IDLE y ya instalé el módulo de selenio y el navegador Firefox. Cada vez que intento ejecutar la función webdriver, obtengo esto:

from selenium import webdriver browser = webdriver.Firefox()

Excepción: -

Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0DA1080>> Traceback (most recent call last): File "C:/Python/Python35/lib/site-packages/selenium/webdriver/common/service.py", line 163, in __del__ self.stop() File "C:/Python/Python35/lib/site-packages/selenium/webdriver/common/service.py", line 135, in stop if self.process is None: AttributeError: ''Service'' object has no attribute ''process'' Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0E08128>> Traceback (most recent call last): File "C:/Python/Python35/lib/site-packages/selenium/webdriver/common/service.py", line 163, in __del__ self.stop() File "C:/Python/Python35/lib/site-packages/selenium/webdriver/common/service.py", line 135, in stop if self.process is None: AttributeError: ''Service'' object has no attribute ''process'' Traceback (most recent call last): File "C:/Python/Python35/lib/site-packages/selenium/webdriver/common/service.py", line 64, in start stdout=self.log_file, stderr=self.log_file) File "C:/Python/Python35/lib/subprocess.py", line 947, in __init__ restore_signals, start_new_session) File "C:/Python/Python35/lib/subprocess.py", line 1224, in _execute_child startupinfo) FileNotFoundError: [WinError 2] The system cannot find the file specified During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<pyshell#11>", line 1, in <module> browser = webdriver.Firefox() File "C:/Python/Python35/lib/site-packages/selenium/webdriver/firefox/webdriver.py", line 135, in __init__ self.service.start() File "C:/Python/Python35/lib/site-packages/selenium/webdriver/common/service.py", line 71, in start os.path.basename(self.path), self.start_error_message) selenium.common.exceptions.WebDriverException: Message: ''geckodriver'' executable needs to be in PATH.

Creo que necesito establecer el camino para geckodriver pero no estoy seguro de cómo, entonces, ¿alguien puede decirme cómo haría esto?


Para usuarios de windows

usa el código original como es:

from selenium import webdriver browser = webdriver.Firefox() driver.get("https://www.google.com")

luego descargue el controlador de: mozilla / geckodriver

Colóquelo en una ruta fija (permanentemente) ... como ejemplo, lo puse en:

C: / Python35

Luego vaya a las variables de entorno del sistema, en la cuadrícula de "Variables del sistema" busque la variable Ruta y agregue:

; C: / Python35 / geckodriver

geckodriver, no geckodriver.exe .


Pasos para MAC:

La solución simple es descargar GeckoDriver y agregarlo a su RUTA del sistema. Puede usar cualquiera de los dos enfoques:

Método corto

1) Descargue y descomprima Geckodriver .

2) Mencione la ruta al iniciar el controlador:

driver = webdriver.Firefox(executable_path=''/your/path/to/geckodriver'')

Método largo

1) Descargue y descomprima Geckodriver .

2) Abra .bash_profile . Si aún no lo ha creado, puede hacerlo usando el comando: touch ~/.bash_profile . Luego ábralo usando: open ~/.bash_profile

3) Teniendo en cuenta que el archivo GeckoDriver está presente en su carpeta de Descargas, puede agregar las siguientes líneas al archivo .bash_profile :

PATH="/Users/<your-name>/Downloads/geckodriver:$PATH" export PATH

Con esto, está agregando la ruta a GeckoDriver a su RUTA del sistema. Esto le dice al sistema dónde se encuentra GeckoDriver al ejecutar sus scripts Selenium.

4) Guarde el .bash_profile y fuerce su ejecución. Esto carga los valores inmediatamente sin tener que reiniciar. Para hacer esto, puede ejecutar el siguiente comando:

source ~/.bash_profile

5) Eso es todo. ¡Estás listo!. Puede ejecutar el script Python ahora.


Ubuntu 18.04+ y la última versión de geckodriver

Esto también debería funcionar para mac u otras variedades * nix.

export GV=v0.24.0 wget "https://github.com/mozilla/geckodriver/releases/download/$GV/geckodriver-$GV-linux64.tar.gz" tar xvzf geckodriver-$GV-linux64.tar.gz chmod +x geckodriver sudo cp geckodriver /usr/local/bin/


Algunos aportes / aclaraciones adicionales para futuros lectores de este hilo:

Lo siguiente es suficiente como resolución para Windows 7, Python 3.6, selenium 3.11:

La nota de @ dsalaj en este hilo anterior para Unix también se aplica a Windows; jugando con el camino de env. variable a nivel de Windows y se puede evitar el reinicio del sistema de Windows.

(1) Descargue geckodriver (como se describió anteriormente en este hilo) y coloque el geckdriver.exe (descomprimido) en X: / Folder / of / your / choice

(2) Ejemplo de código de Python:

import os; os.environ["PATH"] += os.pathsep + r''X:/Folder/of/your/choice''; from selenium import webdriver; browser = webdriver.Firefox(); browser.get(''http://localhost:8000'') assert ''Django'' in browser.title

Notas: (1) Puede tomar alrededor de 10 segundos para que el código anterior abra el navegador Firefox para la URL especificada.
(2) La consola de Python mostraría el siguiente error si no hay un servidor que ya se esté ejecutando en la URL especificada o sirva una página con el título que contiene la cadena ''Django'': selenium.common.exceptions.WebDriverException: Mensaje: Página de error alcanzada: acerca de : neterror? e = connectionFailure & u = http% 3A // localhost% 3A8000 / & c = UTF-8 & f = regular & d = Firefox% 20can% E2% 80% 9


De hecho, he descubierto que puedes usar el último controlador geck sin ponerlo en la ruta del sistema. Actualmente estoy usando

https://github.com/mozilla/geckodriver/releases/download/v0.12.0/geckodriver-v0.12.0-win64.zip

Firefox 50.1.0

Python 3.5.2

Selenio 3.0.2

Windows 10

Estoy ejecutando un VirtualEnv (que administro usando PyCharm, supongo que usa Pip para instalar todo)

En el siguiente código puedo usar una ruta específica para el controlador geck usando el parámetro ejecutable_path (descubrí esto al echar un vistazo en Lib / site-packages / selenium / webdriver / firefox / webdriver.py). Tenga en cuenta que sospecho que el orden de los argumentos de los parámetros al llamar al controlador web es importante, por lo que el ejecutable_path es el último en mi código (segunda última línea en el extremo derecho)

También puede notar que uso un perfil de Firefox personalizado para solucionar el problema sec_error_unknown_issuer con el que se encontrará si el sitio que está probando tiene un certificado no confiable. ver ¿Cómo deshabilitar la advertencia de conexión no confiable de Firefox usando Selenium?

Después de la investigación, se descubrió que el controlador de Marionette está incompleto y todavía en progreso, y que ninguna cantidad de configuración de varias capacidades u opciones de perfil para despedir o configurar certificados iba a funcionar. Por lo tanto, era más fácil usar un perfil personalizado.

De todos modos, aquí está el código sobre cómo conseguí que el geckodriver funcionara sin estar en el camino:

from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities firefox_capabilities = DesiredCapabilities.FIREFOX firefox_capabilities[''marionette''] = True #you probably don''t need the next 3 lines they don''t seem to work anyway firefox_capabilities[''handleAlerts''] = True firefox_capabilities[''acceptSslCerts''] = True firefox_capabilities[''acceptInsecureCerts''] = True #In the next line I''m using a specific FireFox profile because # I wanted to get around the sec_error_unknown_issuer problems with the new Firefox and Marionette driver # I create a FireFox profile where I had already made an exception for the site I''m testing # see https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles#w_starting-the-profile-manager ffProfilePath = ''D:/Work/PyTestFramework/FirefoxSeleniumProfile'' profile = webdriver.FirefoxProfile(profile_directory=ffProfilePath) geckoPath = ''D:/Work/PyTestFramework/geckodriver.exe'' browser = webdriver.Firefox(firefox_profile=profile, capabilities=firefox_capabilities, executable_path=geckoPath) browser.get(''http://.com'')


En Raspberry Pi tuve que crear desde el controlador ARM y configurar el geckodriver y la ruta de registro en:

sudo nano /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py

def __init__(self, firefox_profile=None, firefox_binary=None, timeout=30, capabilities=None, proxy=None, executable_path="/PATH/gecko/geckodriver", firefox_options=None, log_path="/PATH/geckodriver.log"):


En macOS con Homebrew ya instalado, simplemente puede ejecutar el comando Terminal

$ brew install geckodriver

Como homebrew ya extendió la PATH no es necesario modificar ningún script de inicio.


Es realmente triste que ninguno de los libros publicados en Selenium / Python y la mayoría de los comentarios sobre este tema a través de Google no expliquen claramente la lógica de ruta para configurar esto en Mac (¡todo es Windows!). Todos los youtubes se recogen en el "después" que tiene la configuración de ruta (en mi opinión, ¡la salida barata!). Entonces, para sus maravillosos usuarios de Mac, use lo siguiente para editar sus archivos de ruta bash:

> $ touch ~ / .bash_profile; abrir ~ / .bash_profile

A continuación, agregue una ruta como esta ... * # Configuración de RUTA para geckodriver RUTA = "/ usr / bin / geckodriver: $ {PATH}" export PATH

Establecer RUTA para Selenium firefox

RUTA = "~ / Users / yourNamePATH / VEnvPythonInterpreter / lib / python2.7 / site-packages / selenium / webdriver / firefox /: $ {PATH}" RUTA de exportación

Establecer RUTA para el ejecutable en el controlador de Firefox

PATH = "/ Users / yournamePATH / VEnvPythonInterpreter / lib / python2.7 / site-packages / selenium / webdriver / common / service.py: $ {PATH}" export PATH *

Esto funcionó para mí. Mi preocupación es cuándo la comunidad de Selenium Windows comenzará a jugar el juego real y nos incluirá a los usuarios de Mac en su arrogante membresía del club.


Esto lo resolvió para mí.

from selenium import webdriver driver = webdriver.Firefox(executable_path=r''your/path/geckodriver.exe'') driver.get(''http://inventwithpython.com'')


Estoy usando Windows 10 y Anaconda2. Intenté configurar la variable de ruta del sistema pero no funcionó. Luego simplemente agregué el archivo geckodriver.exe a la carpeta Anaconda2 / Scripts y todo funciona muy bien ahora. Para mí el camino era: -

C: / Usuarios / Bhavya / Anaconda2 / Scripts


Estoy usando Windows 10 y esto funcionó para mí:

  1. Descarga geckodriver desde aquí . Descargue la versión correcta para la computadora que está utilizando
  2. Descomprima el archivo que acaba de descargar y corte / copie el archivo ".exe" que contiene
  3. Navegue a C: {su carpeta raíz de Python}. El mío fue C: / Python27. Pegue el archivo geckodriver.exe en esta carpeta.
  4. Reinicie su entorno de desarrollo.
  5. Intente ejecutar el código nuevamente, debería funcionar ahora.

La respuesta de @saurabh resuelve el problema, pero no explica por qué Automate the Boring Stuff with Python no incluye esos pasos.

Esto se debe a que el libro está basado en selenio 2.xy el controlador Firefox para esa serie no necesita el controlador gecko. La interfaz Gecko para manejar el navegador no estaba disponible cuando se estaba desarrollando selenio.

La última versión de la serie selenium 2.x es 2.53.6 (ver, por ejemplo, estas respuestas , para una vista más fácil de las versiones).

La página de la versión 2.53.6 no menciona gecko en absoluto. Pero desde la versión 3.0.2, la documentación indica explícitamente que necesita instalar el controlador gecko.

Si después de una actualización (o instalación en un sistema nuevo), su software que funcionó bien antes (o en su sistema anterior) ya no funciona y tiene prisa, fije la versión de selenio en su dispositivo virtual haciendo

pip install selenium==2.53.6

pero, por supuesto, la solución a largo plazo para el desarrollo es configurar un nuevo virtualenv con la última versión de selenium, instalar el controlador gecko y probar si todo sigue funcionando como se esperaba. Pero el aumento de la versión principal podría introducir otros cambios de API que no están cubiertos por su libro, por lo que es posible que desee seguir con el selenio anterior, hasta que tenga la confianza suficiente de que puede solucionar cualquier discrepancia entre el API de selenium2 y selenium3.


Mac 10.12.1 python 2.7.10 esto funciona para mí :)

def download(url): firefox_capabilities = DesiredCapabilities.FIREFOX firefox_capabilities[''marionette''] = True browser = webdriver.Firefox(capabilities=firefox_capabilities, executable_path=r''/Users/Do01/Documents/crawler-env/geckodriver'') browser.get(url) return browser.page_source


Selenium responde a esta pregunta en su DESCRIPTION.rst

Drivers ======= Selenium requires a driver to interface with the chosen browser. Firefox, for example, requires `geckodriver <https://github.com/mozilla/geckodriver/releases>`_, which needs to be installed before the below examples can be run. Make sure it''s in your `PATH`, e. g., place it in `/usr/bin` or `/usr/local/bin`. Failure to observe this step will give you an error `selenium.common.exceptions.WebDriverException: Message: ''geckodriver'' executable needs to be in PATH.

Básicamente, simplemente descargue el controlador geckodriver, descomprímalo y mueva el ejecutable a su carpeta / usr / bin


Si desea agregar las rutas del controlador en Windows 10:

  1. Haga clic derecho en el icono "Esta PC" y seleccione "Propiedades"

  2. Haga clic en "Configuración avanzada del sistema"

  3. Haga clic en "Variables de entorno" en la parte inferior de la pantalla
  4. En la sección "Variables de usuario", resalte "Ruta" y haga clic en "Editar"
  5. Agregue las rutas a sus variables haciendo clic en "Nuevo" y escriba la ruta del controlador que está agregando y presione enter.
  6. Una vez que haya terminado de ingresar en la ruta, haga clic en "Aceptar"
  7. Siga haciendo clic en "Aceptar" hasta que haya cerrado todas las pantallas

Si está utilizando Anaconda , todo lo que tiene que hacer es activar su entorno virtual y luego instalar geckodriver con el siguiente command :

conda install -c conda-forge geckodriver



estos pasos RESUELTOS para mí en ubuntu firefox 50.

  1. Descargar geckodriver

  2. Copie geckodriver en / usr / local / bin

NO necesita agregar

firefox_capabilities = DesiredCapabilities.FIREFOX firefox_capabilities[''marionette''] = True firefox_capabilities[''binary''] = ''/usr/bin/firefox'' browser = webdriver.Firefox(capabilities=firefox_capabilities)


¡La forma más fácil para windows!
Descargue la última versión de geckodriver desde aquí . Agregue el archivo geckodriver.exe al directorio de Python (o cualquier otro directorio que ya PATH en PATH ). Esto debería resolver el problema (Probado en Windows 10)


Para configurar geckodriver para Selenium Python:

Necesita establecer la ruta geckodriver con FirefoxDriver como se muestra a continuación:

self.driver = webdriver.Firefox(executable_path = ''D:/Selenium_RiponAlWasim/geckodriver-v0.18.0-win64/geckodriver.exe'')

Descargue geckodriver para su sistema operativo adecuado (desde https://github.com/mozilla/geckodriver/releases ) -> Extraiga en una carpeta de su elección -> Establezca la ruta correctamente como se mencionó anteriormente

Estoy usando Python 3.6.2 y Selenium WebDriver 3.4.3 en Windows 10.

Otra forma de configurar geckodriver:

i) Simplemente pegue geckodriver.exe en / Python / Scripts / (En mi caso, la carpeta era: C: / Python36 / Scripts)
ii) Ahora escriba el código simple de la siguiente manera:

self.driver = webdriver.Firefox()