向python selenium选项添加-profile参数时,Firefox连接被拒绝
我试图在python中为Firefox selenium驱动程序的启动添加选项。我用于启动驱动程序的函数如下所示:向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
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应用程序的。