如何解决将-profile参数添加到python硒选项时,Firefox连接被拒绝
我正在尝试向python中的capture crash data添加Firefox硒驱动程序启动选项。我用来启动驱动程序的功能如下:
for vertex in vertices:
g.add_vertex(vertex)
g.add_edges(edges)
当我尝试使用此版本的功能启动驱动程序时,出现此错误:
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浏览器这样打开:
如何# 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)
进行修改以使Firefox和geckodriver能够正确启动并具有捕获崩溃数据的功能?
解决方法
我认为类似的方法应该起作用:
import tempfile
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
# Custom profile folder to keep the minidump files
profile = tempfile.mkdtemp(".selenium")
print("*** Using profile: {}".format(profile))
# Use the above folder as custom profile
opts = Options()
opts.add_argument("-profile")
opts.add_argument(profile)
opts.binary = "/Applications/Firefox.app/Contents/MacOS/firefox"
driver = webdriver.Firefox(options=opts,# hard-code the Marionette port so geckodriver can connect
service_args=["--marionette-port","2828"])
# Your test code which crashes Firefox
如果这不起作用,建议您检查official documentation
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。