【发布时间】: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 的。我的电脑上没有运行其他任何东西。
无论我是否将实际的ipAddress 和port 作为参数传递,或者我是否为这两个参数传递null,这都是正确的。我能想到的唯一不同的是我在Options -> General -> Network Settings -> Settings -> Manual Proxy Configuration 下手动设置了代理。我显然也在运行一个特定的 Firefox 配置文件。但我不知道为什么这会导致如此长的启动时间并消耗如此多的内存。 我们正在处理将近 20 GB 的内存!
是什么导致如此大的内存消耗和如此长的启动时间?
谢谢
【问题讨论】:
-
你确定你有最新版本的壁虎驱动和火狐浏览器。如果不手动设置 IP,启动需要 19GB 吗?
标签: selenium selenium-webdriver firefox memory proxy