仅获取加载时间的请求/响应 >= 1 秒 Java 中的浏览器暴徒



是否可以从加载时间为> = 1 sec的har过滤请求/响应?我需要将HAR对象保存到单独的文件中,然后上传到HAR Viewer中。以下是我生成.har文件的代码。

//BrowserMobProxy
        BrowserMobProxy server = new BrowserMobProxyServer();
        server.start(0);
        server.setHarCaptureTypes(CaptureType.getAllContentCaptureTypes());
        server.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);
        server.newHar("Bhaskar");
        //PHANTOMJS_CLI_ARGS
        ArrayList<String> cliArgsCap = new ArrayList<>();
        cliArgsCap.add("--proxy=localhost:"+server.getPort());
        cliArgsCap.add("--ignore-ssl-errors=yes");
        //DesiredCapabilities
        String userAgent = "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Mobile Safari/537.36";
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
        capabilities.setCapability(CapabilityType.SUPPORTS_JAVASCRIPT, true);
        capabilities.setCapability("phantomjs.page.settings.userAgent", userAgent);
        capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArgsCap);
        capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,"D:/req/phantomjs-2.1.1-windows/bin/phantomjs.exe");
        //WebDriver
        WebDriver driver = new PhantomJSDriver(capabilities);
        driver.get("https://www.google.com");
        //HAR
        Har har = server.getHar();
        FileOutputStream fos = new FileOutputStream("D:\HAR-Information.har");
        har.writeTo(fos);
        server.stop();
        driver.close();

您是否注意到har中的"时机"块?

此对象描述了请求响应往返中的各个阶段。所有时间均以毫秒为单位。

"timings": {
    "blocked": 0,
    "dns": -1,
    "connect": 15,
    "send": 20,
    "wait": 38,
    "receive": 12,
    "ssl": -1,
    "comment": ""
}
  • 阻止[数字,可选] - 在队列中花费的时间等待网络连接。如果计时不适用于当前请求。

  • dns [数字,可选] -DNS分辨率时间。需要的时间解决主机名。如果计时不适用于当前请求。

  • 连接[数字,可选] - 创建TCP连接所需的时间。如果计时不适用于当前请求,请使用-1。

  • 发送[号码] - 将HTTP请求发送到服务器所需的时间。

  • 等待[数字] - 等待服务器的响应。收到[编号] - 读取服务器的整个响应所需的时间(或缓存)。

  • ssl [数字,可选](1.2中的新) - SSL/TLS所需的时间谈判。如果定义了此字段,则还包括时间在连接字段中(确保与HAR 1.1的向后兼容)。如果计时不适用于当前请求,请使用-1。

  • 注释[字符串,可选](1.2中的新) - 用户或应用程序。

发送,等待和接收时间不是可选的,必须具有非负值。

导出工具可以省略已阻止的DNS,Connect和SSL,如果无法提供每个请求的时间。可以提供这些时间的工具,如果不应用它们,则可以将其值设置为-1。例如,对于重复使用现有连接的请求,连接将为-1。

请求的时间值必须等于本节中提供的时间的总和(不包括任何-1个值)。

以下如果没有-1值(输入是log.entries中的对象):

entry.time == entry.timings.blocked entry.timings.dns entry.timings.connect entry.timings.send entry.timings.wait entry.timings.receive;

拥有完整的HAR对象后,您可以在HAR上迭代并计算每个元素的总项目,并删除那些时间> 1000ms的人。然后,您可以将HAR对象保存到文件中。

相关内容

  • 没有找到相关文章

最新更新