【问题标题】:Selenium WebDriver Consumes 19,000 MB of Memory.. Takes 10 min to Launch FirefoxSelenium WebDriver 消耗 19,000 MB 内存。启动 Firefox 需要 10 分钟
【发布时间】:2021-09-11 07:33:42
【问题描述】:

我正在使用以下代码启动Selenium WebDriver

public static WebDriver launchWebDriver(String ipAddress, String port)
{

    System.setProperty("webdriver.gecko.driver", "PATH_TO_GECKO_DRIVER");
    String firefoxInstallationFolder = "PATH_TO_FIREFOX_INSTALLATION_FOLDER";

    File firefoxProfileFile = new File(firefoxInstallationFolder);


    FirefoxProfile firefoxProfile = new FirefoxProfile(firefoxProfileFile);


    firefoxProfile.setPreference("datareporting.policy.dataSubmissionPolicyAccepted", false);
    firefoxProfile.setPreference("dom.max_chrome_script_run_time", 0);
    firefoxProfile.setPreference("dom.max_script_run_time", 0);
    firefoxProfile.setPreference("media.peerconnection.enabled", false);


    FirefoxOptions firefoxOptions = new FirefoxOptions();

    firefoxOptions.setProfile(firefoxProfile);

    firefoxOptions.addPreference("dom.popup_maximum", 200);
    firefoxOptions.addPreference("dom.webnotifications.enabled", false);
    firefoxOptions.addPreference("media.peerconnection.enabled", false);
    firefoxOptions.addPreference("general.useragent.override", "CUSTOM_UA");


    DesiredCapabilities dc = DesiredCapabilities.firefox();


    if (ipAddress != null && port != null) {

        Proxy proxy = new Proxy();

        proxy.setHttpProxy(ipAddress + ":" + port);
        proxy.setFtpProxy(ipAddress + ":" + port);
        proxy.setSslProxy(ipAddress + ":" + port);

        dc.setCapability(CapabilityType.PROXY, proxy);
    }           


    firefoxOptions.merge(dc);

    WebDriver driver = new FirefoxDriver(firefoxOptions);

    return driver;
}

在运行上述代码之前,Task Manager 显示 Java Platform Binary 消耗 212 MB 内存。运行上述代码后(当时我的机器上没有运行其他代码),内存使用量开始攀升至 492 MB,然后上升到 636 MB,然后上升到 1,946 MB 和 13,000 MB。 它达到了 19,000 MB 以上的高位。除了 Selenium V3 的默认代码之外,我没有运行任何东西。

以下是我截取的一些屏幕截图,展示了内存是如何快速增加的。

注意:它从不到 1,000 MB 开始,但我只在 12,000 MB 开始捕获,但您可以在下面的屏幕截图中看到它是如何从 12,000 MB 缩放到超过 17,000 MB 的。我的电脑上没有运行其他任何东西。

无论我是否将实际的ipAddressport 作为参数传递,或者我是否为这两个参数传递null,这都是正确的。我能想到的唯一不同的是我在Options -> General -> Network Settings -> Settings -> Manual Proxy Configuration 下手动设置了代理。我显然也在运行一个特定的 Firefox 配置文件。但我不知道为什么这会导致如此长的启动时间并消耗如此多的内存。 我们正在处理将近 20 GB 的内存!

是什么导致如此大的内存消耗和如此长的启动时间?

谢谢

【问题讨论】:

  • 你确定你有最新版本的壁虎驱动和火狐浏览器。如果不手动设置 IP,启动需要 19GB 吗?

标签: selenium selenium-webdriver firefox memory proxy


【解决方案1】:

发生这种情况时,您将 Firefox 配置文件与缓存图像重用(可能是我不知道的 GecoDriver 错误)。解决问题:

  1. 清理 Firefox 配置文件中的缓存。您可以简单地删除文件夹 /cache2

    中的所有内容
  2. 在 Selenium 下运行的 Firefox 浏览器中关闭磁盘缓存。也许你可以用 FirefoxOptions 来做,但我更喜欢在 about:config 中将 browser.cache.disk.enable 设置为 false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-12
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多