我正在尝试使用 Selenium 连接到 Firefox 的现有实例 - 文档说要使用类似的东西
options=webdriver.FirefoxOptions()
options.binary_location = r'C:\Program Files\Mozilla Firefox\firefox.exe'
webdriver_service = Service(r'c:\tmp\geckodriver.exe')
driver = webdriver.Firefox(service = webdriver_service, service_args=['--marionette-port', '2828', '--connect-existing'])
但是,我收到错误
driver = webdriver.Firefox(service = webdriver_service, service_args=['--marionette-port', '2828', '--connect-existing'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: WebDriver.__init__() got an unexpected keyword argument 'service_args'
我看到其他关于“意外的关键字参数”的问题,他们说最新版本的 Selenium 有其他通过选项传递参数的方法。
我试过了
options.add_argument('--marionette-port')
options.add_argument('2828')
options.add_argument('--connect-existing')
但它似乎仍然创建了一个新的 Firefox 实例
我已经用以下参数启动了 Firefox
“C:\ Program Files \ Mozilla Firefox irefox.exe”-marionette -start-debugger-server 2828
我该如何解决这个问题?
这些是我的版本
Python版本
python --version
Python 3.12.2
硒版本
pip show selenium
Name: selenium
Version: 4.18.1
Gecko驱动版本
geckodriver --version
geckodriver 0.34.0 (c44f0d09630a 2024-01-02 15:36 +0000)
火狐 123.0(64 位)
Windows 11
您应该将
service_args
参数放在 Service
类中,而不是放在 Firefox
上。我相信这应该有效
options=webdriver.FirefoxOptions()
options.binary_location = r'C:\Program Files\Mozilla Firefox\firefox.exe'
webdriver_service = Service(r'c:\tmp\geckodriver.exe', service_args=['--marionette-port', '2828', '--connect-existing'])
driver = webdriver.Firefox(service = webdriver_service)