selenium.common.exceptions.InvalidSessionIdException utilizando GeckoDriver Selenium Firefox en modo sin cabeza a través de Python

Estoy intentando usar Python y Selenium para automatizar algunos casos en el modo sin cabeza de Firefox. Creo que hice todas las configuraciones que necesito, pero todavía no se inicializa webdrvier.

Mi problema es obtener la excepción aproximadamente 30-60 segundos después de ejecutar mi código y el mensaje de excepción no está claro. En realidad, la sección de mensajes está vacía. Como se puede ver en el geckodriver.log, Firefox se ejecuta en modo sin cabeza.

Yo uso Firefox 56.0.1, python 3.6, selenium 3.141.0. Aquí está mi código y registros;

Código:

import os import time import selenium from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver.firefox.options import Options from selenium.webdriver.firefox.firefox_binary import FirefoxBinary from selenium.webdriver.firefox.firefox_profile import FirefoxProfile options = Options() options.set_headless(True) dir = "C:\\Python36\\Lib\\site-packages\\selenium\\webdriver\\firefox" ff_driver_path = dir + "\\geckodriver.exe" firefox_capabilities = DesiredCapabilities().FIREFOX firefox_capabilities['marionette'] = True profile = webdriver.FirefoxProfile() binary = FirefoxBinary('C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe') driver = webdriver.Firefox(desired_capabilities=firefox_capabilities, firefox_profile=profile, firefox_binary=binary, firefox_options=options, executable_path=ff_driver_path) driver.get("https://ipaddress/") 

Registros:

     File "", line 20, in  File "C:\Python36\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 174, in __init__ keep_alive=True) File "C:\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__ self.start_session(capabilities, browser_profile) File "C:\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "C:\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute self.error_handler.check_response(response) File "C:\Python36\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.InvalidSessionIdException: Message: 

    registros de geckodriver:

     1544600615819 mozrunner::runner INFO Running command: "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe" "-marionette" "-headless" "-foreground" "-no-remote" "-profile" "C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\2\\rust_mozprofile.SDw8B2IEG5cE" *** You are running in headless mode. 1544600616120 addons.xpi WARN Error parsing extensions state: [Exception... "Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [amIAddonManagerStartup.readStartupData]" nsresult: "0x80520012 (NS_ERROR_FILE_NOT_FOUND)" location: "JS frame :: resource://gre/modules/addons/XPIProvider.jsm :: loadExtensionState :: line 1554" data: no] Stack trace: loadExtensionState()@resource://gre/modules/addons/XPIProvider.jsm:1554 < getInstallState()@resource://gre/modules/addons/XPIProvider.jsm:1589 < checkForChanges()@resource://gre/modules/addons/XPIProvider.jsm:3109 < startup()@resource://gre/modules/addons/XPIProvider.jsm:2188 < callProvider()@resource://gre/modules/AddonManager.jsm:269 < _startProvider()@resource://gre/modules/AddonManager.jsm:739 < startup()@resource://gre/modules/AddonManager.jsm:906 < startup()@resource://gre/modules/AddonManager.jsm:3090 < observe()@jar:file:///C:/Program%20Files%20(x86)/Mozilla%20Firefox/omni.ja!/components/addonManager.js:65 1544600616661 Marionette INFO Enabled via --marionette [Child 2656] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346 [Child 2656] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346 1544600618075 Marionette INFO Listening on port 64093 JavaScript error: jar:file:///C:/Program%20Files%20(x86)/Mozilla%20Firefox/omni.ja!/components/captivedetect.js, line 352: TypeError: this._runningRequest is null JavaScript error: jar:file:///C:/Program%20Files%20(x86)/Mozilla%20Firefox/omni.ja!/components/captivedetect.js, line 352: TypeError: this._runningRequest is null JavaScript error: jar:file:///C:/Program%20Files%20(x86)/Mozilla%20Firefox/omni.ja!/components/captivedetect.js, line 352: TypeError: this._runningRequest is null JavaScript error: jar:file:///C:/Program%20Files%20(x86)/Mozilla%20Firefox/omni.ja!/components/captivedetect.js, line 352: TypeError: this._runningRequest is null JavaScript error: jar:file:///C:/Program%20Files%20(x86)/Mozilla%20Firefox/omni.ja!/components/captivedetect.js, line 352: TypeError: this._runningRequest is null JavaScript error: jar:file:///C:/Program%20Files%20(x86)/Mozilla%20Firefox/omni.ja!/components/captivedetect.js, line 352: TypeError: this._runningRequest is null 

    ¿Alguna idea sobre lo que estoy haciendo mal? ¡Gracias!

    Este mensaje de error …

     selenium.common.exceptions.InvalidSessionIdException: Message: 

    … implica que el GeckoDriver no pudo iniciar / generar una nueva sesión de WebBrowsing, es decir, una sesión del navegador Firefox .

    Según los mensajes de registro, el número de versión de geckodriver ya no se refleja en el inicio, por lo que debe estar usando:

    Versión de GeckoDriver => 0.22.0 (2018-09-15)

    Pero estás utilizando:

    • Selenio 3.141.0
    • Firefox 56.0.1

    Por lo tanto, su principal problema es la incompatibilidad entre la versión de los binarios GeckoDriver , Selenium y Firefox que está utilizando.


    Solución

    Si está utilizando el combo GeckoDriverSeleniumFirefox , debe seguir el siguiente cuadro de compatibilidad para las plataformas compatibles :

    tabla de compatibilidad