gpt4 book ai didi

java - 使用 Selenium java 长时间运行 webdriver 时内存增加

转载 作者:行者123 更新时间:2023-12-02 10:13:18 25 4
gpt4 key购买 nike

我正在使用 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 个 WebDrivers)。

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

最佳答案

首先,您需要了解,每当您使用 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);

关于java - 使用 Selenium java 长时间运行 webdriver 时内存增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54846306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com