Selenium配置Firefox时报错to_capabilities()缺少self参数如何解决
错误原因
你代码中options = webdriver.FirefoxOptions这一行没有对FirefoxOptions类做实例化,直接把类本身赋值给了options变量。to_capabilities()是FirefoxOptions的实例方法,只有实例化后的对象调用时才会自动传入self参数,直接传入类本身就会触发缺少self位置参数的报错。
修复方案
- 核心改动:在
webdriver.FirefoxOptions后加括号完成实例化,即修改为options = webdriver.FirefoxOptions() - 可选优化:代码中重复导入了两次
from selenium import webdriver,属于冗余代码可以删除其中一行;如果你的Selenium版本≥4.6,无需使用webdriver_manager,Selenium内置了驱动自动管理能力,可简化驱动初始化写法。
修复后兼容所有版本的完整代码
import unittest from selenium import webdriver from webdriver_manager.firefox import GeckoDriverManager # 新增括号完成FirefoxOptions实例化 options = webdriver.FirefoxOptions() options.headless = True driver = webdriver.Firefox(executable_path=GeckoDriverManager().install(), options=options) driver.implicitly_wait(10) driver.get('http://amazon.de') print(driver.title)
Selenium≥4.6简化写法(无需webdriver_manager)
import unittest from selenium import webdriver options = webdriver.FirefoxOptions() options.headless = True # 无需手动指定驱动路径,Selenium会自动匹配下载 driver = webdriver.Firefox(options=options) driver.implicitly_wait(10) driver.get('http://amazon.de') print(driver.title)
内容的提问来源于stack exchange,提问作者Nils Conrad
相关产品推荐
相关产品推荐

