Я отслеживаю свои HTTP-запросы с помощью BrowserUp (https://github.com/browserup/browserup-proxy) Прокси и получить объект HAR с сервера. К сожалению, BrowserUp не содержит метода для записи этого объекта в файл, поэтому я использую тот же метод, что и BrowserMob. Проблема в том, что файл, который выходит из него, кажется, неправильно отформатирован (Гатлинг выдает исключение для формата времени по индексу 23, и если я конвертирую его в jmx, jmeter говорит, что он не содержит HTTP-запросы)
Мой код:
// Start the BrowserMob proxy
BrowserUpProxy server = new BrowserUpProxyServer();
server.setHarCaptureTypes(CaptureType.REQUEST_CONTENT);
NativeResolver resolver = new NativeResolver();
resolver.getHostRemappings();
System.out.println("resolver:" + resolver);
server.setHostNameResolver(resolver);
server.start();
server.newHar();
// Get selenium proxy
Proxy proxy = ClientUtil.createSeleniumProxy(server);
GeckoDriverService geckoservice = new GeckoDriverService.Builder()
.usingDriverExecutable(new File("C:/ProgrammeZwei/geckodriver.exe")).usingAnyFreePort()
.usingAnyFreePort().build();
try {
geckoservice.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Configure desired capability for using proxy server with WebDriver
FirefoxOptions options = new FirefoxOptions();
options.setProxy(proxy);
options.addPreference("network.proxy.allow_hijacking_localhost", true);
// Set up driver
WebDriver driver = new FirefoxDriver(geckoservice, options);
driver.get("https://www.google.com");
Har har = server.getHar();
List<HarEntry> entries = server.getHar().getLog().getEntries();
for (HarEntry entry : entries) {
Date date = entry.getStartedDateTime();
System.out.println("startedtime:" + date.toString() + " request:" + entry.getRequest().getMethod() + ":"
+ entry.getRequest().getUrl());
}
String pfad = System.getProperty("user.dir") + File.separator + System.currentTimeMillis() + "MiniTest.har";
File harFile = new File(pfad);
ObjectMapper mapper = new ObjectMapper();
try {
mapper.writeValue(harFile, har.getLog());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Close the browser
driver.quit();
фрагмент вывода консоли:
startedtime:Wed Aug 07 17:46:26 CEST 2019 request:GET:https://www.google.com/
startedtime:Wed Aug 07 17:46:26 CEST 2019 request:GET:https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
startedtime:Wed Aug 07 17:46:26 CEST 2019 request:GET:https://www.google.com/gen_204?atyp=i&ct=rfl&cad=&ei=UvJKXYvRDY3awALA4qDYCg&zx=1565192786421
startedtime:Wed Aug 07 17:46:26 CEST 2019 request:GET:https://www.google.com/gen_204?atyp=i&ct=rfl&cad=&ei=UvJKXYvRDY3awALA4qDYCg&zx=1565192786442
поэтому я думаю, что все данные правильно собраны в har-объекте. У вас есть идея, как записать это в файл?