如何使用 selenium 和 python 保留 Firefox 缓存

How to retain Firefox cache using selenium and python

我的 selenium 自动化脚本 运行ning 在 firefox 上有一个小问题。每次重新启动容器时,我都需要再次进行身份验证。在 chrome 上,我可以使用缓存,但不能在 Firefox 上使用。我确实搜索了如何强制 firefox 使用缓存,但或者我遗漏了一些步骤,或者答案现在已经过时了。

这是“启动 firefox”的代码片段:

def start_firefox():
    try:
        profile = webdriver.FirefoxProfile(profile_directory = '/tmp/firefox')
        driver = webdriver.Firefox(firefox_profile=profile,
                                   service_log_path=os.path.devnull)
        return driver
    except Exception as e:
        set_status('selenium', False)
        logging.exception(e)

知道是什么阻止了 firefox 重复使用相同的缓存吗?

更新 我尝试使用“--profile /tmp/firefox”(需要导入 selenium.webdriver.firefox.options)运行 firefox,希望它能重用缓存,但它只是打开 firefox,因为它是第一个-运行 并在几秒钟后关闭。

def start_firefox():
    try:
        options = Options()
        options.add_argument('--profile /tmp/firefox')
        driver = webdriver.Firefox(service_log_path=os.path.devnull,
                                   options=options)
        return driver
    except Exception as e:
        set_status('selenium', False)
        logging.exception(e)

仍在尝试随机的事情,看看我是否可以像在 chrome 和 options.add_argument('--user-data-dir=chrome-data') 上那样保留我的缓存。

我在一个回答中看到有人遇到了类似的问题,使用 webdriver_manager 能够解决它。我会link这里,但我丢失了,找不到。

from webdriver_manager.firefox import GeckoDriverManager

####
####

def start_firefox():
    try:
        options = Options()
        options.add_argument('--profile')
        options.add_argument('/tmp/firefox/')
        driver = webdriver.Firefox(service_log_path=os.path.devnull,
                                   executable_path=GeckoDriverManager().install(),
                                   firefox_options=options)
        return driver
    except Exception as e:
        set_status('selenium', False)
        logging.exception(e)