Selenium报错:WebDriver.init()收到意外关键字参数'executable_path'
解决Selenium中TypeError: WebDriver.init()收到意外关键字参数'executable_path'的问题
错误原因
Selenium 4及以上版本已移除了直接在webdriver.Firefox()中传入executable_path参数的方式,必须通过Service类来管理驱动文件路径。
修正方案
- 导入Firefox对应的
Service类 - 用
Service实例指定geckodriver路径,再传递给webdriver.Firefox()的service参数
修正后的完整代码
from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.firefox.service import Service # 新增导入Service类 from time import sleep # 用Service指定驱动路径 service = Service("C:/geckodriver/geckodriver.exe") driver = webdriver.Firefox(service=service) def reset_password(username, email): driver.get("https://www.example.com/") # 替换为实际目标网址 sleep(2) # 注意:需确认页面元素实际的name属性值是否为"Email or Username" driver.find_element_by_name('Email or Username').send_keys(username) driver.find_element_by_name('Email or Username').send_keys(Keys.ENTER) sleep(2) driver.find_element_by_name('Email or Username').send_keys(email) driver.find_element_by_name('Email or Username').send_keys(Keys.ENTER) sleep(2) driver.quit() # 调用函数时传入实际用户名和邮箱 # reset_password("your_username", "your_email@example.com")
额外注意事项
- 原代码中
reset_password函数定义后,后续代码未缩进,导致函数逻辑为空、执行代码暴露在函数外,这会引发逻辑错误,修正后已将相关代码缩进至函数内部。 - 若geckodriver已添加到系统环境变量中,Selenium 4.3+版本可省略手动指定路径,直接使用
driver = webdriver.Firefox()即可。
内容的提问来源于stack exchange,提问作者hjj734
相关产品推荐
相关产品推荐

