NotADirectoryError:[WinError 267]通过Selenium Python调用Firefox时目录名称无效错误

Cod*_*eak 3 python firefox selenium selenium-webdriver geckodriver

我正在尝试从python代码下面使用Selenium webdriver调用firefox浏览器。

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()
Run Code Online (Sandbox Code Playgroud)

但它始终会引发如下错误,但这适用于Chrome浏览器。

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
Run Code Online (Sandbox Code Playgroud)

我在这里想念什么?

我也尝试过使用pip升级硒包

pip install -U selenium
Run Code Online (Sandbox Code Playgroud)

附加信息:运行Firefox最新版本(59.0.2),Python(3.6.5)和Selenium Gecko Webdriver(0.20.0)。不知道是否需要任何帮助。

Deb*_*anB 8

您需要注意以下几点:

  • 您需要通过单个正斜杠(即,连同原始的ie 开关)一起传递Key 可执行文件路径和指向GeckoDriver绝对路径的,如下所示:\r

    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()
    
    Run Code Online (Sandbox Code Playgroud)
  • 清理你的项目工作,通过你的IDE重建仅需要依赖你的项目。

  • 在执行测试套件之前和之后,使用CCleaner工具清除所有操作系统杂项。
  • 如果您的基本Web客户端版本太旧,请通过Revo Uninstaller卸载它,并安装最新的GA和Web客户端的发行版本。
  • 进行系统重启
  • 执行您的@Test