在 Selenium 导航前开始 BrowserMob HAR 捕获
把 BrowserMob 放进浏览器路径,在导航前开始 HAR 捕获,并在停止代理前取回捕获结果。
BrowserMob 只记录真正经过其监听器的流量。在 Selenium 浏览器旁边启动代理,并不会让该浏览器走这条路径。
对于 BrowserMob 文档中 2.1.5 的内嵌 API,现有的 Java Selenium 配置可以采用这个顺序:
BrowserMobProxy proxy = new BrowserMobProxyServer();
proxy.start(0);
try {
ChromeOptions options = new ChromeOptions();
options.setProxy(ClientUtil.createSeleniumProxy(proxy));
WebDriver driver = new ChromeDriver(options);
try {
proxy.newHar("example-page");
driver.get("http://www.example.com/");
Har capture = proxy.getHar();
capture.writeTo(new java.io.File("page.har"));
} finally {
driver.quit();
}
} finally {
proxy.stop();
}端口 0 会申请一个可用端口。ClientUtil 根据该监听器构建 Selenium 代理设置。捕获在导航之前开始,并在代理仍然可用时取回。
这段代码假定项目的 BrowserMob、HAR 和 Selenium 类型已经可用。捕获请求或响应正文是额外的 CaptureType 选择。HTTPS 拦截还需要它预期的证书信任安排。
对于远程 Grid 浏览器,要公布一个能从该浏览器所在机器访问的地址。测试运行器上的 loopback 地址在那边指的是另一台机器的 loopback。
这捕获的是浏览器已配置的 HTTP 路径。它并不会建立一条阻止其他任何出站连接的操作系统规则。