向python selenium选项添加-profile参数时,Firefox连接被拒绝

向python selenium选项添加-profile参数时,Firefox连接被拒绝,python,firefox,geckodriver,connection-refused,minidump,Python,Firefox,Geckodriver,Connection Refused,Minidump,我试图在python中为Firefox selenium驱动程序的启动添加选项。我用于启动驱动程序的函数如下所示: import os from selenium import webdriver from selenium.webdriver.firefox.options import Options as FFOptions from selenium.webdriver.firefox.webdriver import WebDriver as FirefoxWebDriver

我试图在python中为Firefox selenium驱动程序的启动添加选项。我用于启动驱动程序的函数如下所示:

import os 
from selenium import webdriver  
from selenium.webdriver.firefox.options import Options as FFOptions
from selenium.webdriver.firefox.webdriver import WebDriver as FirefoxWebDriver 
import tempfile
SELENIUM_TEMP_DIR = os.path.abspath('./data/raw')


def get_local_firefox_driver():
    
    os.environ['MOZ_FORCE_DISABLE_E10S'] = '1'
    ff_options = FFOptions()

    # Add custom crash dump folder
    profile_temp = tempfile.mkdtemp(".selenium", dir=SELENIUM_TEMP_DIR)
    print("*** Using profile: {}".format(profile_temp))
    ff_options.add_argument("-profile")
    ff_options.add_argument(profile_temp)

    ff_profile = webdriver.FirefoxProfile()
    # set some privacy settings
    ff_profile.set_preference("places.history.enabled", False)
    ff_profile.set_preference("privacy.clearOnShutdown.offlineApps", True)
    ff_profile.set_preference("privacy.clearOnShutdown.passwords", True)
    ff_profile.set_preference("privacy.clearOnShutdown.siteSettings", True)
    ff_profile.set_preference("privacy.sanitize.sanitizeOnShutdown", True)
    ff_profile.set_preference("signon.rememberSignons", False)
    ff_profile.set_preference("network.cookie.lifetimePolicy", 2)
    ff_profile.set_preference("network.dns.disablePrefetch", True)
    ff_profile.set_preference("network.http.sendRefererHeader", 0)
    ff_profile.set_preference("permissions.default.image", 2)

    driver = webdriver.Firefox(firefox_profile=ff_profile, options=ff_options)
    return driver
当我尝试使用此版本的函数启动驱动程序时,出现以下错误:

Traceback (most recent call last):
  File "/Users/username/project_name/error_demo.py", line 2, in <module>
    driver = get_local_firefox_driver(headless=False)
  File "/Users/username/project_name/src/selenium_helper.py", line 129, in get_local_firefox_driver
    driver = webdriver.Firefox(firefox_profile=ff_profile, options=ff_options, capabilities=ff_capabilities)
  File "/Users/username/miniconda3/envs/live_auction/lib/python3.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
    keep_alive=True)
  File "/Users/username/miniconda3/envs/live_auction/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/Users/username/miniconda3/envs/live_auction/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/Users/username/miniconda3/envs/live_auction/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/Users/username/miniconda3/envs/live_auction/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: connection refused
我没有收到任何错误,Firefox浏览器打开时如下所示:

import os 
from selenium import webdriver  
from selenium.webdriver.firefox.options import Options as FFOptions
from selenium.webdriver.firefox.webdriver import WebDriver as FirefoxWebDriver 
import tempfile
SELENIUM_TEMP_DIR = os.path.abspath('./data/raw')


def get_local_firefox_driver():
    
    os.environ['MOZ_FORCE_DISABLE_E10S'] = '1'
    ff_options = FFOptions()

    # Add custom crash dump folder
    profile_temp = tempfile.mkdtemp(".selenium", dir=SELENIUM_TEMP_DIR)
    print("*** Using profile: {}".format(profile_temp))
    ff_options.add_argument("-profile")
    ff_options.add_argument(profile_temp)

    ff_profile = webdriver.FirefoxProfile()
    # set some privacy settings
    ff_profile.set_preference("places.history.enabled", False)
    ff_profile.set_preference("privacy.clearOnShutdown.offlineApps", True)
    ff_profile.set_preference("privacy.clearOnShutdown.passwords", True)
    ff_profile.set_preference("privacy.clearOnShutdown.siteSettings", True)
    ff_profile.set_preference("privacy.sanitize.sanitizeOnShutdown", True)
    ff_profile.set_preference("signon.rememberSignons", False)
    ff_profile.set_preference("network.cookie.lifetimePolicy", 2)
    ff_profile.set_preference("network.dns.disablePrefetch", True)
    ff_profile.set_preference("network.http.sendRefererHeader", 0)
    ff_profile.set_preference("permissions.default.image", 2)

    driver = webdriver.Firefox(firefox_profile=ff_profile, options=ff_options)
    return driver


需要如何修改
get\u local\u firefox\u driver()
以使firefox和geckodriver能够正确启动并捕获崩溃数据?

我认为类似的方法应该可以工作:

导入临时文件
从selenium导入webdriver
从selenium.webdriver.firefox.options导入选项
#用于保存小型转储文件的自定义配置文件文件夹
profile=tempfile.mkdtemp(“.selenium”)
打印(“***使用配置文件:{}”。格式(配置文件))
#将上述文件夹用作自定义配置文件
opts=Options()
选择添加参数(“-profile”)
选择添加参数(配置文件)
opts.binary=“/Applications/Firefox.app/Contents/MacOS/Firefox”
driver=webdriver.Firefox(选项=opts,
#硬编码木偶端口,以便geckodriver可以连接
服务参数=[“--木偶端口”,“2828”])
#导致Firefox崩溃的测试代码

如果这不起作用,我建议您查看我最近发现/尝试对木偶端口进行编码的

。当我不包括临时文件时,驱动程序对它是稳定的。当我添加带有木偶参数的tempfile时,会有一个奇怪的延迟(python代码在驱动程序准备就绪之前移动),firefox会崩溃。firefox崩溃也很奇怪,因为它没有显示python回溯。它莫名其妙地关闭了。您提供的代码与我在问题中链接的代码完全相同。这真的没用。你建议我在官方文件中找哪一个?您提供的文档是针对整个Firefox应用程序的。