首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Selenium长时间运行webdriver时内存增加

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

Stack Overflow用户
提问于 2019-02-23 21:20:10
回答 1查看 1.2K关注 0票数 0

我使用selenium进行网页抓取,基本上,该应用程序创建一个WebDriver,并对所有所需的页面使用它(每隔1或2秒,它将对一个新页面执行get()调用并提取相关内容)。

我使用的是火狐无头模式,如下所示:

代码语言:javascript
复制
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()并初始化一个新的驱动程序。这听起来合理吗?

EN

回答 1

Stack Overflow用户

发布于 2019-02-24 04:41:50

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

为了避免,您可以做两件事:

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

删除"Temp“目录中的数据:

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

为浏览器创建配置文件:

  1. 首先,如果打开Firefox,则关闭Firefox。
  2. 按-> "Windows键“+ "r”打开“运行”窗口
  3. 输入“firefox.exe -p”并按"ENTER“按钮注意:如果没有打开,您可以尝试使用用引号括起来的完整路径。
代码语言:javascript
复制
- On 32 bit- Windows: "C:Program FilesMozilla Firefox.exe" –p
- On 64 bit : Windows: "C:Program Files(x86)Mozilla Firefox.exe" –p  

  1. 对话框将打开,名为Firefox -选择用户配置文件。
  2. 从窗口中选择“”选项,向导就会打开。单击next
  3. 给出要创建的配置文件名称,然后单击finish按钮。
  4. 现在您的配置文件已经准备好了,您可以选择您的配置文件并打开Firefox。
  5. 在程序中添加以下代码: ProfilesIni配置文件=新ProfilesIni();FirefoxProfile myprofile = profile.getProfile("Your_Profile_Name");//初始化Firefox驱动程序WebDriver驱动程序=新FirefoxDriver(myprofile);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54846306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档