如何使用Selenium从chromedriver获取内存使用历史记录

4

我正在使用chromedriver测试一个javascript webapp。如何通过chromedriver和selenium获取内存使用信息(类似于chrome开发工具中“历史记录”选项卡中显示的信息)。

我认为这应该是可能的,因为chromedriver使用chrome的devtools调试系统与控制chrome进行交互。

我目前在使用selenium时使用的语言是java,但如果您能提供任何语言的示例代码,那将不胜感激。


由于chromedriver使用devtools调试系统,因此您无法让它启动一个devtols窗口并从中进行爬取/读取... - Joelle Boulet
2个回答

7

我在Chrome中做了类似的事情,以获取我的应用程序的JavaScript内存使用情况。

应该使用以下chromeOptions打开Chrome驱动程序。

        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.addArguments("--enable-precise-memory-info"); // enabling this flag to get precise js heap memory info for chrome browser
        WebDriver driver = new RemoteWebDriver(new URL(localhost:4444+"/wd/hub"), chromeOptions);

然后使用以下逻辑,我们可以获取Chrome实例的JavaScript内存使用情况。

  JavascriptExecutor executor = (JavascriptExecutor) driver;
  long value = (long) executor.executeScript("return window.performance.memory.usedJSHeapSize");
  long valueInMB = value / (1024 * 1024);

注:我只能在Chrome浏览器中找到这个功能,而Firefox浏览器中没有。


1

如你在评论中提到的,使用Selenium时无法启动devTool。

然而,通过chrome API(javascript)检索内存使用情况(堆快照)有一个有趣的讨论:https://code.google.com/p/chromium/issues/detail?id=448379。如果Chromium开发团队实现了这一点,你可以使用Selenium执行JavaScript来获取堆快照。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接