Я работаю над автоматизированными тестами для расширения браузера chrome. Расширение применяет файл PA c в браузере и автоматически управляет прокси-аутентификацией. Моя цель состоит в том, чтобы дать возможность легко проходить / не проходить трафику c при успешном прокси при запуске тестов.
С помощью Selenium - Chrome Журналы производительности не работают , мне удалось собрать воедино этот конфиг для регистрации событий производительности.
final ChromeOptions options = new ChromeOptions();
final DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setAcceptInsecureCerts(true);
options.addArguments("load-extension=" + unpackedBrowserExtensionPath);
options.setExperimentalOption("w3c", false);
final LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
capabilities.setCapability("goog:loggingPrefs", logPrefs);
instance = new ChromeDriver(options.merge(capabilities));
Я извлекал события во время тестов и записывал их в журнал, чтобы понять их.
final List<LogEntry> entries = instance.manage().logs().get(LogType.PERFORMANCE).getAll();
final FileWriter fw = new FileWriter("/Users/pierrelouisg/Desktop/out2.txt");
for (LogEntry entry : entries) {
fw.write(new Date(entry.getTimestamp()) + "\t" + entry.getLevel() + "\t" + entry.getMessage() + "\n");
}
fw.close();
Когда я смотрю на сетевые журналы, они не ссылаются на прокси. Я точно знаю, что трафик c находится в прокси.
Я что-то упустил? Доступна ли информация о сети, которую я ищу, в другом месте?
ОБНОВЛЕНИЕ # 1
Я пытался использовать BrowserMobProxyServer
, но похоже, что расширение останавливает функцию прокси. Записи журнала с хар пустые. Они заполнены, когда расширение браузера не включено. Так что это не похоже на правильный курс, по крайней мере, как указано ниже.
proxyServer = new BrowserMobProxyServer();
proxyServer.setTrustAllServers(true);
proxyServer.start(9091, Inet4Address.getLocalHost());
proxyServer.setHarCaptureTypes(CaptureType.getAllContentCaptureTypes());
proxyServer.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);
proxyServer.setUseEcc(true);
final Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxyServer);
final String hostIp = Inet4Address.getLocalHost().getHostAddress();
seleniumProxy.setHttpProxy(hostIp + ":" + proxyServer.getPort());
seleniumProxy.setSslProxy(hostIp + ":" + proxyServer.getPort());
capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
capabilities.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);