NotADirectoryError:[WinError 267]通过Selenium Python

时间:2018-04-19 20:06:14

标签: python selenium firefox 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()

但它总是抛出如下错误,但这适用于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

我在这里缺少什么?

我还尝试使用pip升级selenium包

pip install -U selenium

其他信息:运行Firefox最新版本(59.0.2),Python(3.6.5)和Selenium Gecko webdriver(0.20.0)。不确定是否需要任何帮助。

2 个答案:

答案 0 :(得分:4)

您需要处理以下几项事项:

  • 您需要传递 executable_path 以及,并引用 GeckoDriver的绝对路径< / em>通过单个正斜杠,即\以及原始的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()
    
  • 通过 IDE 清除您的项目工作区仅使用所需的依赖关系重建您的项目。

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

答案 1 :(得分:0)

Selenium 正在寻找目录,而不是可执行文件。 您必须指向放置 geckodriver.exe 的目录。不要在字符串参数中包含 geckodriver.exe。

代替

driver = webdriver.Firefox("C:\\selenium\\mozilla\\geckodriver.exe")

driver = webdriver.Firefox("C:\\selenium\\mozilla")