You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Selenium连接已有Firefox实例?解决参数报错问题

解决Selenium 4连接已启动Firefox实例的问题

问题分析

你遇到的TypeError是因为Selenium 4不再支持在webdriver.Firefox()构造函数中直接传递service_args参数;后续将--connect-existing等参数加到FirefoxOptions里的做法也不正确——这些参数是给geckodriver的,不是给Firefox浏览器本身的,所以无法触发连接已有实例的逻辑。

正确解决方案

1. 确认Firefox启动命令(已正确执行)

确保你已经用以下命令启动了带调试端口的Firefox实例:

"C:\Program Files\Mozilla Firefox\firefox.exe" -marionette -start-debugger-server 2828

2. 编写正确的Python代码

通过Service实例的add_argument方法给geckodriver传递连接参数,而不是通过FirefoxOptions:

from selenium import webdriver
from selenium.webdriver.firefox.service import Service

# 配置geckodriver服务,添加连接已有实例的参数
webdriver_service = Service(r'c:\tmp\geckodriver.exe')
webdriver_service.add_argument('--marionette-port=2828')
webdriver_service.add_argument('--connect-existing')

# 配置Firefox选项(如果需要指定浏览器路径)
options = webdriver.FirefoxOptions()
options.binary_location = r'C:\Program Files\Mozilla Firefox\firefox.exe'

# 初始化WebDriver,连接已启动的Firefox实例
driver = webdriver.Firefox(service=webdriver_service, options=options)

# 测试连接是否成功
print(driver.title)

关键说明

  • --marionette-port:指定geckodriver连接Firefox的调试端口,必须和启动Firefox时的-start-debugger-server端口一致。
  • --connect-existing:告诉geckodriver不要启动新的Firefox实例,而是连接已运行的实例。
  • Selenium 4中,geckodriver的参数必须通过Service.add_argument()添加,而不是FirefoxOptions.add_argument()——后者是用来配置Firefox浏览器本身的启动参数(比如隐私模式、窗口大小等)。

内容的提问来源于stack exchange,提问作者user93353

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:33:23