Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ERR_EMPTY_RESPONSE in Chrome when use BrowserMobProxy for selenium test

I've created simple method for get network traffic from Chrome:

 public void saveNetworkTraffic() {
    System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "/bin/chromedriver");
    String sFileName = "networklog.xar";

    BrowserMobProxy proxy = new BrowserMobProxyServer();
    proxy.start(0);

    Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);

    WebDriver driver = new ChromeDriver(capabilities);
    WebDriverRunner.setWebDriver(driver);

    proxy.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);

    proxy.newHar("google.com");

    driver.get("http://google.com/");
    Har har = proxy.getHar();

    File harFile = new File(sFileName);
    try {
        har.writeTo(harFile);
    } catch (IOException ex) {
        System.out.println(ex.toString());
        System.out.println("Could not find file " + sFileName);
    }
}

When browser opens a page it shows an error "ERR_EMPTY_RESPONSE" on this step driver.get("http://google.com/") instead of usual google page in Chrome. I've tried to figure out the reason for the error, but according to the https://github.com/lightbody/browsermob-proxy#using-with-selenium, my code should work fine.

like image 920
Konstantin Avatar asked Feb 16 '26 06:02

Konstantin


1 Answers

Add this code, try it:

proxy.addFirstHttpFilterFactory(new ResponseFilterAdapter.FilterSource(new ResponseFilter() {
            @Override
            public void filterResponse(HttpResponse response, HttpMessageContents contents, HttpMessageInfo messageInfo) {}}, Integer.MAX_VALUE));

enter image description here

like image 136
君奉天 Avatar answered Feb 21 '26 16:02

君奉天