为什么Selenium占用大量内存

问题描述 投票:0回答:2

我想了解selenium与firefox的问题, 我使用 Firefox 版本 56.0.2,selenium3.5.1,和 geckodriver 0.19.1,服务器 ubuntu(x64) 操作系统,firefox --headless 模式 我发现当我长时间运行我的应用程序时,firefox内存会增加很多,例如400MB或更多,并且当我让firefox打开

about:blank
时,内存不会减少 我想知道如何减少firefox内存(不杀死firefox进程),仅使用selenium来控制firefox或通过一些配置启动firefox 我想打开“about:blank”或其他URL来减少内存,但我发现它不起作用;

selenium firefox selenium-webdriver memory geckodriver
2个回答
4
投票

Selenium本身不使用任何内存。消耗内存的是 WebDriverWeb Browser 进程。例如,当您创建任何 WebDriver 变体的新实例来启动相关的 Web 浏览会话时,两个进程都会消耗内存。

现在,不同的 Browser Client 变体将遵循不同且不同的方法和风格来

initiate
manage
teardown
浏览器内部流程。所以不同浏览器的内存消耗会有所不同。

回答您的问题:

  • 当我长时间运行我的应用程序时,Firefox 内存会增加很多:在粗略处理活动浏览会话时,浏览器二进制文件必须跟踪大量内存(堆栈内存/堆内存) )不时提供资源。因此,内存消耗可以根据情况增加/减少。

  • 我想知道如何减少firefox内存:不,你无法控制浏览器的内存消耗。

解决方案

网络浏览器最近已经发展了很多。每个Web浏览器变体,例如MozillaChromeInternet Explorer 正在不断致力于开发更节省内存的浏览器进程。您可以采取以下步骤进行自动化测试以消耗最佳内存:

  • JDK 版本更新到最新版本,因为每个版本都旨在实现最佳内存利用率。
  • 保持 Selenium Version 更新到最新版本,因为每个版本都旨在实现更好的内存管理。
  • WebDriver 版本更新到最新版本,因为每个版本都旨在实现更好的内存管理。
  • Web浏览器版本更新到最新版本,因为每个版本都旨在提高内存利用率。
  • 如果您的 Web 浏览器的基础版本太旧,您可以考虑通过 Revo Uninstaller卸载 Web 浏览器,然后安装最新的 stableGA 版本的 Web 浏览器.

  • 测试执行之前和之后使用CCleaner工具来清除操作系统系统杂务。

  • 在隔离系统中执行测试执行,无需手动干预

  • 测试系统保留在测试实验室内,并配备硬件要求以执行测试套件


0
投票

一种解决方法:

  • 检查内存使用情况,
  • 如果达到极限,
  • 重置驱动程序(退出,等待几秒钟,再次初始化),并且
  • 继续测试。

重置驱动会释放资源;这是您可以控制内存消耗的一种方式

© www.soinside.com 2019 - 2024. All rights reserved.