NotADirectoryError: [WinError 267] The directory name is invalid error while invoking Firefox through Selenium Python

28,510

You need to take care of a couple of things as follows :

  • You need to pass the Key executable_path along with the Value referring to the absolute path of the GeckoDriver through single backslash i.e. \ along with the raw i.e. r switch as follows :

    from selenium import webdriver
    
    driver = webdriver.Firefox(executable_path=r'C:\selenium\mozilla\geckodriver.exe')
    driver.set_page_load_timeout(30)
    driver.get("https://www.google.com/")
    driver.quit()
    
  • Clean your Project Workspace through your IDE and Rebuild your project with required dependencies only.

  • Use CCleaner tool to wipe off all the OS chores before and after the execution of your Test Suite.
  • If your base Web Client version is too old, then uninstall it through Revo Uninstaller and install a recent GA and released version of Web Client.
  • Take a System Reboot.
  • Execute your @Test.
Share:
28,510
CodeLeak
Author by

CodeLeak

Updated on October 19, 2021

Comments

  • CodeLeak
    CodeLeak over 2 years

    I'm trying to invoke a firefox browser using Selenium webdriver from below python code..

    from selenium import webdriver
    
    # Initializing the WebDriver for Firefox browser
    driver = webdriver.Firefox("C:\\selenium\\mozilla\\geckodriver.exe")
    driver.set_page_load_timeout(30)
    driver.maximize_window()
    driver.get("https://www.google.com/")
    
    # Closing the reference
    driver.quit()
    

    but it is always throwing an error like below, however this is working for Chrome browser.

    Traceback (most recent call last):
      File "C:/Python/Practice/FirefoxSample.py", line 8, in <module>
        driver = webdriver.Firefox("C:\\selenium\\mozilla\\geckodriver.exe")
      File "C:\Python\venv\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 139, in __init__
        firefox_profile = FirefoxProfile(firefox_profile)
      File "C:\Python\venv\lib\site-packages\selenium\webdriver\firefox\firefox_profile.py", line 78, in __init__
        ignore=shutil.ignore_patterns("parent.lock", "lock", ".parentlock"))
      File "C:\Python\Python36-32\lib\shutil.py", line 309, in copytree
        names = os.listdir(src)
    NotADirectoryError: [WinError 267] The directory name is invalid: 'C:\\selenium\\mozilla\\geckodriver.exe'
    
    Process finished with exit code 1
    

    What am I missing here?

    I have also tried upgrading the selenium package using the pip

    pip install -U selenium
    

    Additional info: running the Firefox latest version (59.0.2), Python (3.6.5) and Selenium Gecko webdriver (0.20.0). Not sure if anything is needed to help on this.

  • CodingMatters
    CodingMatters over 2 years
    I found this while testing randomly loading chrome/edge/firefox drivers, turns out chrome & edge do not need executable_path explicitly assigned while firefox does. Leaving this comment so others can avoid having to rediscover that trap.