Javascript 需要将Chrome开发工具中的性能监视器详细信息捕获到Java程序中

Javascript 需要将Chrome开发工具中的性能监视器详细信息捕获到Java程序中,javascript,java,selenium,selenium-chromedriver,Javascript,Java,Selenium,Selenium Chromedriver,我正在运行一个由java编写的selenium测试。 作为测试的一部分,我试图捕获/检索浏览器的当前“CPU使用率”和“JS堆大小”,并在控制台中打印出来。 有没有办法在java代码中通过执行JavaScript命令或其他方式来实现这一点 •CPU使用率-站点使用的CPU百分比。 •JS堆大小-应用程序正在使用的内存量(兆字节) 我总是在Chrome浏览器中运行测试。请考虑我的测试场景包含一个简单的网站登录。 由于selenium只能与浏览器本身交互,我认为您无法使用它从服务器获取CPU使用率,

我正在运行一个由java编写的selenium测试。 作为测试的一部分,我试图捕获/检索浏览器的当前“CPU使用率”和“JS堆大小”,并在控制台中打印出来。
有没有办法在java代码中通过执行JavaScript命令或其他方式来实现这一点

•CPU使用率-站点使用的CPU百分比。
•JS堆大小-应用程序正在使用的内存量(兆字节)

我总是在Chrome浏览器中运行测试。请考虑我的测试场景包含一个简单的网站登录。

由于selenium只能与浏览器本身交互,我认为您无法使用它从服务器获取CPU使用率,JS堆大小也是如此

您可以获得脚本创建的Java堆大小;这将提供给selenium。但我认为,如果没有其他工具或直接查看服务器,就无法获得有关服务器使用情况的信息

编辑 经过进一步思考和搜索,您应该能够使用Selenium的JavascriptExecutor获得JS堆大小,因此您应该能够在测试过程中的任何阶段获得
window.performance.memory.usedJSHeapSize
的值。下面是代码

  public static Double reportMemoryUsage(WebDriver webDriver, String message) {
    ((JavascriptExecutor) webDriver).executeScript("window.gc()");
    try {
        TimeUnit.SECONDS.sleep(2);
    } catch (InterruptedException e) {
        LOGGER.error(e.getLocalizedMessage());
    }
    return Double usedJSHeapSize = (Double) ((JavascriptExecutor) webDriver)
            .executeScript("return window.performance.memory.usedJSHeapSize/1024/1024");
    LOGGER.info("Memory Usage at " + usedJSHeapSize + " MB.”);
 }
如果在测试套件开始时调用此方法一次,在测试套件结束时调用一次,则两个usedJSHeapSize值之间的差异应提供Selenium脚本调用的堆空间

我在使用usedJSHeapSize之前强制垃圾收集,以确保没有收集垃圾信息。要在窗口上启用gc功能,必须设置
-js flags=--expose gc
选项

ChromeOptions options = new ChromeOptions();
options.addArguments("-js-flags=--expose-gc");
WebDriver webDriver = new ChromeDriver(options);

如果您仍然想从脚本中找到Java堆大小,请告诉我,我想我可以想出一些解决方法。

如果可能,您可以共享html吗?这适用于任何html页面。此性能监视器详细信息不作为html的一部分提供。我知道selenium只能与浏览器本身交互。因此,我需要任何其他api,它们只需导入到我的selenium代码中即可完成这项工作。您能否分享有关获取脚本创建的JAVA堆大小的详细信息。所提到的性能详细信息仅对我运行的脚本是必需的,而不是从服务器端。提前谢谢。我想,经过一番调查后,您可以使用
javascriptExecutor
获得JS堆的大小;请看我在答案中添加的编辑。非常感谢Peck。当我运行给定的方法时,它返回一个负值,如“-6.761272430419922 MB”。我应该得到一个正值,如附件中所示。如果我没有正确地详细说明我的问题,很抱歉。它只是因为我如何编写消息而出现的吗?LOGGER.info(“在“+message+”-“+usedJSHeapSize+”MB处的内存使用情况”);请注意usedJSHeapSize之前的“-”。这可能会令人困惑,尤其是如果您没有为“message”参数传入任何内容。在这种情况下,输出将类似于“内存使用率为-7.8629 MB”我将修改我答案底部的logger语句,使其更加清晰。您好,有关于获取CPU使用率的帮助吗?最初这不是强制要求,但现在我也需要捕获CPU使用率。