【问题标题】:Memory increasing when webdriver running for long time using Selenium java使用 Selenium java 长时间运行 webdriver 时内存增加
【发布时间】:2019-07-17 16:22:48
【问题描述】:

我正在使用 selenium java 进行网页抓取,基本上该应用程序创建了一个 WebDriver 并一直使用它来处理所有需要的页面(每 1 或 2 秒它会执行一次 get() 调用新页面并提取相关内容)。

我正在使用这样的 Firefox headless 模式:

String driverPath = this.config.getString("browser.firefox.driverPath");

FirefoxBinary firefoxBinary = new FirefoxBinary();
if (useHeadlessMode) {
    firefoxBinary.addCommandLineOptions("--headless");
}
System.setProperty("webdriver.gecko.driver", driverPath);
FirefoxOptions firefoxOptions = new FirefoxOptions();
firefoxOptions.setBinary(firefoxBinary);
webDriver = new FirefoxDriver(firefoxOptions);

我发现,当应用运行 2 小时时,最多会占用 8GB 内存,并且 get() 调用变得非常缓慢(可能需要大约 10 秒左右)。

我的问题是我在创建 WebDriver 时是否遗漏了任何配置?或任何其他将内存使用保持在较低水平的解决方案,因为我正在考虑在将应用程序部署到云后启动多个(约 100 个 WebDriver)。

我正在考虑的解决方案是,对于一定数量的操作,对当前驱动执行 driver.quit() 并初始化一个新的。这听起来合理吗?

【问题讨论】:

  • thisthis 讨论对您有帮助吗?

标签: java selenium selenium-webdriver headless-browser firefox-headless


【解决方案1】:

首先,您需要了解,每当您使用 webdriver 启动浏览器时,它都会在您的“Temp”目录中创建一个临时配置文件,这会消耗您的内存。

为了避免这种情况,你可以做两件事:

  • 从“Temp”目录中删除数据。
  • 为您的浏览器创建一个配置文件并使用它,这样每次您 启动浏览器它不会创建新的配置文件,也不会 消耗更多内存。

从“Temp”目录中删除数据:

  1. 按 -->“Windows 键”+“r”打开“运行”窗口
  2. 键入“%TEMP%”并按“ENTER”按钮
  3. 选择所有文件并通过“Shift + Delete”永久删除

为您的浏览器创建个人资料:

  1. 首先关闭 Firefox(如果打开)。
  2. 按 -->“Windows 键”+“r”打开“运行”窗口
  3. 键入“ firefox.exe –p”并按“ENTER”按钮 注意:如果它没有打开,您可以尝试使用引号括起来的完整路径。

    • 在 32 位 Windows 上:“C:Program FilesMozilla Firefox.exe”-p
    • 在 64 位上:Windows:“C:Program Files(x86)Mozilla Firefox.exe”-p
  4. 将打开一个名为 Firefox 的对话框 - 选择用户配置文件

  5. 从窗口中选择“创建配置文件”选项,将打开一个向导。点击下一步
  6. 提供您要创建的个人资料名称,然后单击完成按钮
  7. 现在您的个人资料已准备就绪,您可以选择您的个人资料并打开 Firefox。
  8. 在你的程序中添加这段代码:

    ProfilesIni profile = new ProfilesIni();
    
    
    FirefoxProfile myprofile = profile.getProfile("Your_Profile_Name");
    
    
    // Initialize Firefox driver
    
    
    WebDriver driver = new FirefoxDriver(myprofile); 
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-10
    • 2022-11-17
    • 2019-03-15
    • 2019-11-17
    • 2020-05-23
    • 1970-01-01
    • 2017-09-25
    • 2015-10-06
    相关资源
    最近更新 更多