How to capture all requests made by page in webdriver? Is there any alternative to Browsermob?

后端 未结 3 1012
长情又很酷
长情又很酷 2020-12-04 16:11

I am using Selenium2/WebDriver to test my web applications. All the tests are written in Java and run with Maven.

While opening a page with webdriver I\'d like to ca

3条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-04 16:30

    There is an alternative with firefox ver 42+, there is addon called Firefox HarExport

    File harExportApi = new File(System.getProperty("user.dir")
                         + "/src/main/resources/firebug/harexporttrigger-0.5.0-beta.7.xpi");
    
    netExportProfile.addExtension(harExportApi);
    netExportProfile.setPreference("extensions.netmonitor.har.enableAutomation", true);
        netExportProfile.setPreference("extensions.netmonitor.har.contentAPIToken", "test");
        netExportProfile.setPreference("extensions.netmonitor.har.autoConnect", true);
    
    cap.setCapability(FirefoxDriver.PROFILE, netExportProfile);
    

    and running following script will give us all the request responses

     String getHarLogScript = "var options = {\n" +
                    "    token: \"test\",\n" +
                    "    getData: true,\n" +
                    "    title: \"my custom title\",\n" +
                    "    jsonp: false,\n" +
                    "  };\n" +
                    "\n" +
                    "  HAR.triggerExport(options).then(result => {\n" +
                    "    var har = JSON.parse(result.data);\n" +
                    "\n" +
                    "    // Use performance.timing to provide onContentLoad\n" +
                    "    +
                    "     +
                    "    var t = performance.timing;\n" +
                    "    var pageTimings = har.log.pages[0].pageTimings;\n" +
                    "    pageTimings.onContentLoad = t.domContentLoadedEventStart - t.navigationStart;\n" +
                    "    pageTimings.onLoad = t.loadEventStart - t.navigationStart;\n" +
                    "\n" +
                    "    window.HarEntries=har.log.entries\n" +
                    "\n" +
                    "    console.log(\"HAR log (\" + result.data.length + \") \", har.log);\n" +
                    "  }, err => {\n" +
                    "    console.error(err);\n" +
                    "  });"
    
    LOG.info("Loading HAR log entries object into browser HarEntries object");
    SeleniumUtils.executeScript(driver, getHarLogScript);
    
    harEntries = ((List) SeleniumUtils.executeScript(driver, "return window.HarEntries"));
    
        

    提交回复
    热议问题