我使用browsermob代理来捕获webdrierver的流量(主要是chrome)。这是我遇到的问题:只要我使用单个页面,一切都可以,但是当URL更改时(由于导航到其他页面或重定向),代理不再捕获任何事件(我无法在HAR文件中看到这些事件)
以下是我如何启动代理:
BrowserMobProxyServer proxy = new BrowserMobProxyServer();
try {
proxy.start(Integer.valueOf(proxyPool.borrowProxyPort()), InetAddress.getLocalHost());
} catch (NumberFormatException | UnknownHostException e) {
Logger.error(e.getLocalizedMessage());
}
proxy.waitForQuiescence(30, 3, TimeUnit.SECONDS);
proxy.setHarCaptureTypes(CaptureType.REQUEST_HEADERS);
Logger.info("Proxy start status: " + proxy.isStarted());
以下是我如何获得har:
proxy.waitForQuiescence(10, 10, TimeUnit.SECONDS);
return proxy.getHar();
当URL更改或我在这里缺少smthn时,我需要以某种方式处理这些情况吗?
这就是我的工作方式!
BrowserMobProxyServer proxyBrowserMob = new BrowserMobProxyServer();
proxy.start();
Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxyBrowserMob)
DesiredCapabilities caps = DesiredCapabilities.firefox();
caps.setCapability("marionette", true);
caps.setCapability(CapabilityType.PROXY, seleniumProxy);
RemoteWebDriver webDriver = new FirefoxDriver(caps);
proxyBrowserMob .enableHarCaptureTypes(CaptureType.REQUEST_CONTENT,CaptureType.REQUEST_HEADERS,CaptureType.REQUEST_COOKIES);
proxyBrowserMob .newHar();
为了检索HAR文件,我遍历一个HarEntry来获取HAR。
List<HarEntry> entries = browserMobProxy.getHar().getLog().getEntries();
for (HarEntry entry : entries) {
// get HarRequest
/get HarResponse
}