WebDriverException: Message: The Browser Appears To Have Exited Before We Could Connect Error With GeckoDriver Selenium And Python
Solution 1:
This error message...
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.
...implies that the GeckoDriver was unable to initiate/spawn a new WebBrowser i.e. Firefox Browser session.
You need to take care of a couple of things as follows:
- To set the
FirefoxBinary
you need to use theFirefoxOptions()
and instead of passing the absolute path of geckodriver binary, you have to pass the absolute path of the desired firefox binary. - As you are using GeckoDriver v0.21.0 you have to mandatorily use marionette so either keep it unchanged (by default
true
) or set marionette totrue
. Your own code with incorporating the minor changes will be:
from selenium import webdriver from selenium.webdriver.firefox.options import Options from selenium.webdriver.common.desired_capabilities import DesiredCapabilities binary = r'C:\Program Files\Mozilla Firefox\firefox.exe' options = Options() options.set_headless(headless=True) options.binary = binary cap = DesiredCapabilities().FIREFOX cap["marionette"] = True #optional driver = webdriver.Firefox(firefox_options=options, capabilities=cap, executable_path="C:\\Utility\\BrowserDrivers\\geckodriver.exe") driver.get("http://google.com/") print ("Headless Firefox Initialized") driver.quit()
Console Output:
Headless Firefox Initialized
Here you can find a detailed discussion on Unable to find a matching set of capabilities with selenium 3.4.3, firefox 54.0 and gecko driver 0.17
Solution 2:
Make sure (especially on Windows (Win 10)) that your browser and controller (python/C/java/perl/etc) is all either x64 or win32, Microsoft will not thunk between them anymore.
So, if your trying to control a 64 bit browser (what will be downloaded by default from firefox) from a x32 bit python, it will exit before you can connect.. go and install a win32 version of firefox for the magic to happen
Solution 3:
After trying almost all of the answers on different forums, a simple self trial resolved the problem and i.e. you need to have python, firefox browser and geckodriver in either 62 bit or 32 bit. Mismatch in this caused the problem in my case.
After ensuring that you are using the same bit version for all the 3 components, just use following lines to run firefox:
ffPath = "C:\\Drivers\\geckodriver.exe"
os.environ["webdriver.firefox.driver"] = ffPath
driver = webdriver.Firefox(executable_path=ffPath)
driver.get(url)
Solution 4:
The issue for me was the mis-match version between python and gekodriver . once all the involved party were 64 bit it worked like a charm
Solution 5:
This error has troubled me a lot. Install this:
pip install -U selenium
Post a Comment for "WebDriverException: Message: The Browser Appears To Have Exited Before We Could Connect Error With GeckoDriver Selenium And Python"